Rumah / Internet / Menghubungkan dua bentuk c. Menambahkan formulir. Interaksi antar bentuk. Buat Formulir Item Tunggal atau Formulir Detail

Menghubungkan dua bentuk c. Menambahkan formulir. Interaksi antar bentuk. Buat Formulir Item Tunggal atau Formulir Detail

Pembaharuan Terakhir: 31.10.2015

Untuk menambahkan formulir lain ke proyek, klik kanan pada nama proyek di jendela Solution Explorer dan pilih Tambah (Tambah)-> Formulir Windows...

Ayo berikan bentuk baru beberapa nama, misalnya Formulir2.cs:

Jadi, kami telah menambahkan formulir kedua ke proyek. Sekarang mari kita coba menerapkan interaksi antara kedua bentuk tersebut. Katakanlah formulir pertama akan memanggil formulir kedua ketika tombol diklik. Pertama, mari tambahkan tombol ke formulir pertama Form1 dan klik dua kali tombol untuk membuka file kode. Jadi, kita akan masuk ke event handler klik tombol, yang dibuat secara default setelah mengklik dua kali tombol:

Tombol batal pribadi1_Click(pengirim objek, EventArgs e) ( )

Sekarang mari tambahkan kode panggilan dari formulir kedua ke dalamnya. Formulir kedua kami disebut Form2, jadi pertama-tama kami membuat objek kelas ini, dan kemudian kami memanggil metode Show untuk menampilkannya di layar:

Private void button1_Click(pengirim objek, EventArgs e) ( Form2 newForm = new Form2(); newForm.Show(); )

Sekarang mari kita lakukan yang sebaliknya - sehingga bentuk kedua mempengaruhi yang pertama. Sedangkan bentuk yang kedua tidak mengetahui keberadaan yang pertama. Untuk memperbaikinya, Anda perlu entah bagaimana mentransfer informasi tentang formulir pertama ke formulir kedua. Untuk melakukan ini, kami akan menggunakan meneruskan tautan ke formulir di konstruktor.

Jadi mari kita beralih ke formulir kedua dan beralih ke kodenya - klik kanan pada formulir dan pilih Lihat Kode (Lihat kode). Sementara itu kosong dan hanya berisi konstruktor. Karena C# mendukung kelebihan metode, kita dapat membuat beberapa metode dan konstruktor dengan parameter berbeda dan memanggil salah satunya tergantung pada situasinya. Jadi, mari kita ubah file kode bentuk kedua menjadi berikut:

Menggunakan Sistem; menggunakan System.Collections.Generic; menggunakan System.ComponentModel; menggunakan System.Data; menggunakan System.Drawing; menggunakan System.Linq; menggunakan System.Text; menggunakan System.Threading.Tasks; menggunakan System.Windows.Forms; namespace HelloApp ( public partial class Form2: Form ( public Form2() ( InitializeComponent(); ) public Form2(Form1 f) ( InitializeComponent(); f.BackColor = Color.Yellow; ) ) )

Sebenarnya, kami baru saja menambahkan di sini konstruktor baru public Form2(Form1 f) , di mana kita mendapatkan formulir pertama dan mengatur latar belakangnya menjadi kuning. Sekarang mari kita masuk ke kode form pertama, dimana kita memanggil form kedua dan mengubahnya menjadi berikut:

Private void button1_Click(pengirim objek, EventArgs e) ( Form2 newForm = new Form2(this); newForm.Show(); )

Karena di kasus ini kata kunci this mewakili referensi ke objek saat ini - objek Form1, kemudian saat membuat formulir kedua, ia akan menerimanya (tautan) dan mengelola formulir pertama melaluinya.

Sekarang, setelah mengklik tombol, kita akan membuat formulir kedua, yang akan segera mengubah warna formulir pertama.

Kami juga dapat membuat objek untuk formulir saat ini:

Private void button1_Click(pengirim objek, EventArgs e) ( Form1 newForm1 = new Form1(); newForm1.Show(); Form2 newForm2 = new Form2(newForm1); newForm2.Show(); )

Saat bekerja dengan banyak formulir, ingatlah bahwa salah satunya adalah formulir utama - yang diluncurkan pertama kali di file Program.cs. Jika kita memiliki banyak formulir yang terbuka pada saat yang sama, maka ketika formulir utama ditutup, seluruh aplikasi ditutup, dan dengan itu semua formulir lainnya.

Jika Anda memiliki formulir panjang untuk beberapa item, terkadang Anda mungkin ingin menelusuri dengan cepat untuk melihat informasi selengkapnya tentang salah satu item. Di Access, ini memerlukan pembuatan tautan antara formulir multi-item dan formulir item tunggal. Saat Anda memilih item dalam formulir multi-item, formulir item tunggal akan terbuka dan menampilkan detail tambahan.

Catatan:

Buat Formulir

Dalam kebanyakan kasus, dua formulir dalam konfigurasi granular didasarkan pada tabel atau kueri yang sama. Jika Anda sudah memiliki beberapa formulir yang perlu Anda gunakan (satu adalah tabel atau formulir multi-item dan yang lainnya adalah satu item atau formulir detail), Anda dapat melewati bagian ini. Jika tidak, gunakan prosedur berikut untuk membuatnya.

Buat Formulir Tabel atau Formulir dengan Beberapa Elemen

    Di Panel Navigasi, pilih tabel atau kueri yang berisi data yang ingin Anda tampilkan dalam bentuk tabel.

    Pilih item Penciptaan > Bentuk lain, lalu - Beberapa elemen atau Meja tergantung pada jenis formulir yang diinginkan.

    Simpan dan tutup formulir.

Untuk informasi selengkapnya tentang formulir multi-item, lihat membuat formulir menggunakan alat Beberapa Item .

Buat Formulir Item Tunggal atau Formulir Detail

    Di Panel Navigasi, klik tabel atau kueri yang berisi data yang ingin Anda tampilkan dalam formulir detail. Ini kemungkinan besar akan menjadi tabel atau kueri yang sama yang Anda gunakan untuk formulir pertama.

    Pilih item Penciptaan > Formulir.

    Buat perubahan yang diperlukan, simpan dan tutup formulir.

Untuk informasi selengkapnya, lihat Membuat formulir dengan alat Bentuk .

Menambahkan logika untuk membuka formulir detail

Sekarang mari kita lihat cara menambahkan makro kecil ke formulir multi-item atau tabel yang akan membuka formulir detail dan menampilkan item yang benar.

Jangan khawatir jika Anda tidak memiliki banyak pengalaman dengan makro. Anda cukup menyalin dan menempelkan XML dari prosedur di artikel ini.

    Jika Anda menggunakan formulir tabel, klik dua kali di Panel Navigasi untuk membukanya. Untuk formulir multi-item, klik kanan di Panel Navigasi dan pilih Modus tata letak.

    Tekan tombol F4 untuk membuka jendela properti jika belum terbuka.

    Klik kolom tempat Anda ingin menambahkan makro. Ini harus menjadi kolom yang, ketika diklik, akan membuka formulir detail setelah menjalankan makro. Pada gambar di atas, makro ditambahkan ke kolom frmContactList.

Nasihat:(TIPS) Anda dapat menambahkan makro ke beberapa kolom.

Untuk informasi selengkapnya tentang makro di database komputer, lihat


Jelas bahwa jika Anda membuat pointer tipe<что там>:: Formulir akan berfungsi, tetapi saya membutuhkan formulir yang sudah dibuat, dengan tombol, dll. (secara umum, kontrol yang berbeda), tetapi secara manual (yaitu secara terprogram) saya tidak ingin meresepkannya dalam bentuk yang bersih (banyak coretan dan bukan fakta bahwa Anda melakukannya dengan benar). Inilah yang masih membingungkan saya ....... Ketika saya menambahkan formulir ke proyek yang sudah dibuat, di file header baru Form2.h tertulis seperti ini:

#pragma sekali
#sertakan "Formulir1.h"

menggunakan Sistem namespace;



menggunakan namespace Sistem::Data;

ruang namaku1(

///
/// Ringkasan untuk Formulir2



kelas ref publik Form2: Sistem publik::Windows::Form::Form
{
publik:
Formulir2 (kosong)
{
Inisialisasi Komponen();

}

Terlindung:

~Bentuk2()
{
jika (komponen)
{
menghapus komponen;
}
}

Pribadi:



///
{
this->components = gcnew System::ComponentModel::Container();
this->Ukuran = Sistem::Gambar::Ukuran(300.300);
this->Teks = L"Form2";
this->Padding = System::Windows::Forms::Padding(0);
ini->
}
#pragmaendregion
};
}

meskipun di Form1.h tertulis seperti ini:

#pragma sekali
#sertakan "Formulir2.h"

ruang namaku1(

Menggunakan Sistem namespace;
menggunakan namespace System::ComponentModel;
menggunakan namespace Sistem::Koleksi;
menggunakan namespace System::Windows::Forms;
menggunakan namespace Sistem::Data;
menggunakan namespace Sistem::Menggambar;

///
/// Ringkasan untuk Formulir1
/// PERINGATAN: Jika Anda mengubah nama kelas ini, Anda perlu mengubah
/// Properti "Nama File Sumber Daya" untuk alat penyusun sumber daya terkelola
/// terkait dengan semua file .resx tempat kelas ini bergantung. Jika tidak,
/// desainer tidak akan dapat berinteraksi dengan baik dengan lokal
/// sumber daya yang terkait dengan formulir ini.
kelas ref publik Form1: Sistem publik::Windows::Formulir::Formulir
{
publik:
Formulir1 (kosong)
{
Inisialisasi Komponen();
//TODO: Tambahkan kode konstruktor di sini
}

Terlindung:
/// Bersihkan semua sumber daya yang digunakan.
~Formulir1()
{
jika (komponen)
{
menghapus komponen;
}
}
private: System::Windows::Forms::Button^ button1;
terlindung:

Pribadi:
/// Variabel desainer yang diperlukan.
Sistem::KomponenModel::Kontainer ^komponen;

#pragma region Windows Form Designer membuat kode
/// Metode yang diperlukan untuk dukungan Desainer - jangan ubah
/// isi metode ini dengan editor kode.
void Inisialisasi Komponen (batal)
{
this->button1 = (gcnew System::Windows::Forms::Button());
ini->SuspendLayout();
// tombol1
this->button1->Location = Sistem::Menggambar::Titik(60, 76);
this->button1->Name = L"button1";
this->button1->Ukuran = Sistem::Gambar::Ukuran(75, 23);
this->button1->TabIndex = 0;
this->button1->Text = L"button1";
this->button1->UseVisualStyleBackColor = true;
this->button1->Klik += gcnew System::EventHandler(this, &Form1::button1_Click);
// Formulir1
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->Ukuran Klien = Sistem::Gambar::Ukuran(292, 266);
this->Controls->Add(this->button1);
this->Nama = L"Form1";
this->Teks = L"Form1";
this->ResumeLayout(false);

}
#pragmaendregion

Sistem Statis::Windows::Forms::Form ^frm = gcnew Sistem::Windows::Forms::Form();
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) (
frm->Tampilkan();
}
};
}

DI TEMPAT YANG BERBEDA KONEKSI NAMESPACE DIATASI!