Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menghantar Data Antara Borang Windows Menggunakan Perwakilan dan Pengendali Acara?

Bagaimanakah Saya Boleh Menghantar Data Antara Borang Windows Menggunakan Perwakilan dan Pengendali Acara?

Linda Hamilton
Lepaskan: 2025-01-04 17:30:39
asal
957 orang telah melayarinya

How Can I Pass Data Between Windows Forms Using Delegates and Event Handlers?

Melalui Data Antara Borang Windows

Apabila menguruskan berbilang borang dalam aplikasi Windows Forms, anda mungkin menghadapi situasi di mana anda perlu berkongsi data antara mereka. Artikel ini menangani isu menghantar pembolehubah daripada borang utama kepada borang "tetapan", membenarkan borang baharu memaparkan maklumat tersebut.

Menggunakan Perwakilan dan Pengendali Acara

Kod yang anda berikan dalam borang utama menggunakan perwakilan dan pengendali acara untuk menghantar data ke borang tetapan. Perwakilan ialah jenis yang mentakrifkan tandatangan untuk kaedah dengan parameter input dan output tertentu. Dengan menugaskan perwakilan kepada pengendali acara, anda boleh mendaftarkan kaedah untuk digunakan apabila acara itu berlaku.

Dalam kes ini, borang utama mencipta PageInfoHandler perwakilan dengan parameter input jenis PageInfoEventArgs. Kelas PageInfoEventArgs mengandungi data (dalam kes ini, rentetan) yang anda mahu hantar ke borang tetapan. Apabila butang "Tetapan" diklik, pengendali acara (OnPageInfoRetrieved) dipanggil, yang memanggil kaedah berdaftar (dalam kes ini, PageInfoRetrieved).

Mengambil Data dalam Borang Tetapan

Dalam borang tetapan, anda perlu menentukan sifat atau kaedah yang membolehkan anda mengakses data yang diluluskan daripada bentuk utama. Dalam penyelesaian yang dicadangkan, pembina digunakan untuk menghantar rentetan ke borang tetapan. Pembina ini akan menyimpan rentetan dalam pembolehubah ahli persendirian, yang kemudiannya boleh diakses melalui kaedah pengambil awam.

Contoh Kod Lengkap

Contoh kod lengkap adalah seperti berikut:

MainForm.cs

public partial class MainForm : Form
{
    public delegate void PageInfoHandler(object sender, PageInfoEventArgs e);
    public event PageInfoHandler PageInfoRetrieved;

    private void toolStripBtnSettings_Click(object sender, EventArgs e)
    {
        PageInfoEventArgs args = new PageInfoEventArgs(SomeString);
        OnPageInfoRetrieved(args);

        SettingsForm settingsForm = new SettingsForm(SomeString);
        settingsForm.ShowDialog();
    }

    private void OnPageInfoRetrieved(PageInfoEventArgs args)
    {
        if (PageInfoRetrieved != null)
            PageInfoRetrieved(this, args);
    }
}
Salin selepas log masuk

SettingsForm.cs

public class SettingsForm : WinForm
{
    private string m_Data;

    public SettingsForm(string data)
    {
        m_Data = data;
    }

    public string Data { get { return m_Data; } }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Data Antara Borang Windows Menggunakan Perwakilan dan Pengendali Acara?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan