這是一個非常簡單的問題,但我找不到解決方案(如果這是原始的,我不是專業的程序員)。在Form1中,我有一個名爲「A」的變量,它的值爲1.我將此發送給Form2並將其值更改爲2.然後在Form2上關閉,我需要將更新後的值發送到Form1。這最後一部分我不知道該怎麼做,我需要你的幫助。如何檢索form2關閉時變量A的更新值?檢索form2關閉時變量A的更新值? C#
回答
如果您有一個由Form2更改的值,並且該值由Form2管理,則可以將其作爲Form2的屬性公開,例如,
public class Form2
{
public string MyValue
{
get { return myValue; }
}
}
,然後你可以檢索它像
Form2 f2 = new Form2();
f2.ShowDialog();
string theValue = f2.MyValue;
一般來說,你可能要檢查的ShowDialog的返回的DialogResult()來查看用戶是否按下例如確定或取消按鈕。我不確定在這個特殊情況下你是否需要這個。
UPDATE
如果Form2的是不是一個對話框,您可以改用一個回調格局通知Form1中該窗體2被關閉,以允許Form1中檢索它從窗體2需要的任何值。或者,您可以讓回調直接提供您需要的值。
具體而言,您可以將一個Func<T>
傳遞給Form2,該Form2指向Form1中的回調方法。當Form2確定它正在關閉時,它會調用Func<T>
。這裏,T
表示您想要傳回給Form1的變量的類型。
下面是假定T
是一個字符串的例子:
public Form2 : Form
{
public void MyCallback(string value) { /* Do something with value */
}
public Form1 : Form
{
Func<string> callback;
public Form1(Func<string> callback)
{
this.callback = callback;
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (callback != null) callback(myValue);
}
}
的WinForm有一個事件稱爲FormClosing
。右鍵單擊表單並選擇屬性,在IDE的右側,您將獲得屬性。會有一個黃色的「閃電」圖標。您將在那裏找到FormClosing
事件。現在,在表單關閉時添加您想要的代碼
您可以在form1
上處理form2.FormClosing
事件。您可以在form1
上檢索您的價值form2.B
(前提是它可公開訪問),因爲form2
正在關閉。從關閉事件
form2.FormClosing += OnFormBClosing;
private void OnFormBClosing(object sender, FormClosingEventArgs eventArgs)
{
A = form2.B;
}
我真的很想理解這裏的3個downvotes。從常見問題解答:*最重要的是,誠實。如果您看到錯誤信息,請將其投票。添加註釋,指出具體是錯誤的。提供你自己的更好的答案。最棒的是 - 編輯和改進現有的問題和答案!* – 2012-08-13 17:34:23
我沒有做到! – Amir 2012-08-13 18:25:00
使用
private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
//update
}
它可能會更好,如果你可以發表你的實際的源代碼。
我想你從Form1中打開Form2,是不是?如果這是真的,我認爲寫這樣的嘗試從form2關閉事件更新form1可能會更好。
Form2 form2 = new Form2();
form2.A = this.A; // here this = form1
if (DialogResult.OK == form2.ShowDialog())
{
// So here, retrieve the property from form2.
this.A = form2.A;
}
- 1. C#在關閉Form2時更新Form1
- 2. JSON變量不檢索更新值
- 3. 通過封閉檢索變量的值
- 4. 在form1中檢測到form2已關閉
- 5. 未關閉變量的關閉變量
- 6. 檢索數值變量的變量名
- 7. Form2中的值不會在Form2中更新
- 8. 如何更新基於新值的選項[A]的變量
- 9. 我怎樣才能讓form1刷新時,我關閉form2
- 10. 檢索JSON變量的值
- 11. 值更新已關閉
- 12. 關閉時設置變量
- 13. 將變量值從Form1傳輸到Form2
- 14. 變量關閉
- 15. 更改全局變量的JavaScript關閉
- 16. c# - 無法從更新時從asp.net gridview檢索值
- 17. 以變量爲關鍵字檢索關聯數組值
- 18. 檢索值的變量成的jquery
- 19. 關閉Form1如果FileExists +打開Form2
- 20. 當值存在時更新變量
- 21. C#關閉和訪問外部變量
- 22. 關閉在C循環變量#
- 23. PHP變量值不更新
- 24. 當form2在vb.net關閉時觸發form1的事件
- 25. 無法關閉以關閉變量
- 26. C#變量值只在JavaScript中調用時更新一次
- 27. 決策變量時自己更新以前的變量賦值改變
- 28. C#不斷更新變量
- 29. C#變量不會更新
- 30. 從c更新python變量
這隻適用於如果form2是對話框。 – davenewza 2012-08-13 15:27:29
唯一的問題是,當我更新Form 2中的變量Form1時,仍未更新該值。 – Amir 2012-08-13 15:28:48
@davenewza:調用示例顯示一個對話框,爲true。但是,檢索價值的方法適用於任何形式。 – 2012-08-13 15:32:59