Saya memiliki formulir utama (sebut saja frmHireQuote) yang merupakan anak dari formulir MDI utama (frmMainMDI), yang memperlihatkan formulir lain (frmImportContact) melalui ShowDialog () saat sebuah tombol diklik.
Ketika pengguna mengklik 'OK' di frmImportContact, saya ingin meneruskan beberapa variabel string kembali ke beberapa kotak teks di frmHireQuote.
Perhatikan bahwa mungkin ada beberapa contoh frmHireQuote, jelas penting bahwa saya kembali ke contoh yang disebut turunan frmImportContact ini.
Apa metode terbaik untuk melakukan ini?
sumber
Saya biasanya membuat metode statis pada form / dialog, yang bisa saya panggil. Ini mengembalikan keberhasilan (tombol OK) atau kegagalan, bersama dengan nilai-nilai yang perlu diisi.
Dan pada formulir:
Untuk memanggil formulir Anda;
sumber
frm
can (dan baru saja dilakukan ketika saya membacanya) menyebabkan kebingungan ...Menemukan masalah kecil lainnya dengan kode ini ... atau setidaknya bermasalah ketika saya mencoba mengimplementasikannya.
Tombol-tombol di frmMain tidak mengembalikan nilai yang kompatibel, menggunakan VS2010 saya menambahkan yang berikut dan semuanya mulai berfungsi dengan baik.
Setelah menambahkan dua nilai tombol, dialognya berhasil! Terima kasih untuk contohnya, ini sangat membantu.
sumber
Saya hanya memasukkan konstruktor sesuatu dengan referensi, sehingga subformulir dapat mengubah nilainya dan bentuk utama bisa mendapatkan objek baru atau yang dimodifikasi dari subformulir.
sumber
Saya menggunakan MDI cukup banyak, saya sangat menyukainya (di mana dapat digunakan) daripada beberapa bentuk mengambang.
Tetapi untuk mendapatkan yang terbaik dari itu, Anda harus memahami acara Anda sendiri. Itu membuat hidup jadi lebih mudah bagi Anda.
Contoh kerangka.
Memiliki tipe interupt Anda sendiri,
Kemudian tipe Args Anda sendiri
Kemudian gunakan delegasi di dalam namespace Anda, tetapi di luar kelas
Sekarang baik secara manual atau menggunakan GUI, minta MDIparent menanggapi peristiwa bentuk anak.
Tetapi dengan owr Args Anda, Anda dapat mengurangi ini menjadi satu fungsi. dan Anda dapat memiliki ketentuan untuk menghentikan interupsi, baik untuk debugging, tetapi dapat bermanfaat dengan cara lain juga.
Hanya minta al dari kode acara mdiparent Anda menunjuk ke satu fungsi,
Mekanisme sakelar sederhana biasanya cukup untuk meneruskan acara ke formulir yang sesuai.
sumber
Jika Anda ingin meneruskan data
form2
dariform1
tanpa melewati seperti baruform(sting "data");
Lakukan seperti itu di formulir 1
dalam formulir 2 tambahkan
Anda juga dapat menggunakan nilai
form1
seperti ini jika Anda ingin menukar sesuatuform1
hanya di form1
sumber
Pertama, Anda harus mendefinisikan atribut di form2 (child), Anda akan memperbarui atribut ini di form2 dan juga dari form1 (induk):
Memanggil form2 (anak) dari form1 (induk):
sumber
Saya mengangkat suatu peristiwa dalam bentuk pengaturan nilai dan berlangganan ke acara itu dalam bentuk yang perlu berurusan dengan perubahan nilai.
sumber
delegasi adalah pilihan terbaik untuk mengirim data dari satu formulir ke formulir lainnya.
sumber