簡體   English   中英

通過在Visual C#Windows窗體中單擊Form2的按鈕來更新Form1的小部件

[英]Updating Form1's widgets by clicking Form2's button in Visual C# Windows Forms

我是Visual C#的新手,正在編寫具有多種形式的GUI應用程序。 一種形式是主窗口,其余形式是某種選項窗口。 顯示選項窗口時,我需要向其中加載一些數據(例如,窗口編輯框的字符串),然后對其進行編輯並在關閉選項窗口時返回到主窗口。 有什么簡單的方法可以實現嗎? 我已經找到了一些解決方案, 例如 ,或兩種形式之間的c#事件處理 ,但我無法真正使其符合我的需求。 我當時正在考慮在構造函數中傳遞數據,但是如何取回它呢? 我發現了一些有關ShowDialog的信息,但是正如我所說的,我是C#的新手(昨天開始^^),不知道我是否可以使用它。

有什么想法嗎?

我發現以下先前的答案,概述了將特定屬性從一種形式發送到另一種形式:

將值從一種形式發送到另一種形式

using關鍵字還將確保正確清理表單,這是表單用法的鏈接(請雙關語): http : //msdn.microsoft.com/zh-cn/library/vstudio/yh598w02。 ASPX

老實說,我也遇到過同樣的問題,我不得不說,在進行討論之前,我只是將父表單本身傳遞給孩子,然后以這種方式對其進行更改。 如:

ChildForm child = new ChildForm(this);  //from the parent

public ChildForm(ParentForm parent)
{
    this.parent = parent;
}

不過,可能不是最好的約定,因為您可能不需要像孩子一樣從父級那里訪問太多內容。

謝謝大家,我想我終於明白了。 Idle_Mind,按照我的觀點,您的想法是最簡單的,因此我決定使用它。 如果其他人有這樣的問題,這是我編寫的代碼:

在主窗口窗體中:單擊按鈕時,將出現一個新窗體; 關閉它后,label1顯示以該形式鍵入的文本

private void Button1_Click(object sender, EventArgs e)
    {
        LoadDataForm loaddata = new LoadDataForm("initial value");
        if (loaddata.ShowDialog() == DialogResult.OK)
        {
            label1.Text = loaddata.textBox1.Text;
        }
    }

在加載數據表單中:傳遞給表單構造函數的參數出現在textBox1中; textBox1的Modifiers屬性必須修改為“ public”

public LoadDataForm(string initvalue)
    {
        InitializeComponent();
        textBox1.Text = initvalue;
    }
private void ApplyButton_Click(object sender, EventArgs e)
    {
        DialogResult = DialogResult.OK;
    }

此致,Mopsiok

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM