我有兩種形式(C#)。在一種形式中,有一種方法可以在關閉表單之後將數據存儲在數據庫中,並在另一個表單上(主表單)更新數據。如何使用面向對象或簡單地做到最漂亮和最好。在C中將參數從一種形式發送到另一種形式#
-1
A
回答
1
通常,當您想要更新主窗體時,您可以在該窗體上創建一個公共方法,並在具有新數據並可以將它們發送到主窗體時從另一窗體調用它。這不應該是一個問題。
請注意,如果要將數據發送到某處,則需要對該位置的引用,即您需要對其他表單中的主表單進行引用。無論是從主要形式傳遞this
其他形式的構造函數,或者你也可以存儲在Program
類(這樣做在Main
方法,其中創建的主要形式)等
0
最OOP在靜態字段參考友好的解決方案可能是以任何形式「觸發」數據更新的事件,該數據更新由另一個表單的方法訂閱並處理。這裏有一個基本的線路:
public class Form1:Form
{
public event EventHandler<MyDataObject> DataChanged;
...
public override void OnClosing(CancelEventArgs e)
{
//Put in logic to determine whether we should fire the DataChanged event
try
{
if(DataChanged != null) DataChanged(this, myFormCurrentData);
base.OnClosing(e);
}
catch(Exception ex)
{
//If any handlers failed, cancel closing the window until the errors
//are resolved.
MessageBox.Show(ex.Message, "Error While Saving", MessageBoxButtons.OK);
e.Cancel = true;
}
}
}
...
public class Form2:Form
{
//Called from wherever you would open Form1 from Form2
public void LaunchForm1()
{
var form1 = new Form1();
form1.DataChanged += HandleDataChange;
form1.Show();
}
private void HandleDataChange(object sender, MyDataObject dataObj)
{
//Do your data validation or persistence in this method; if it fails,
//throw a descriptive exception, which will prevent Form1 from closing.
}
}
你不必使用一個事件;也可以使用一個簡單的委託,它可以做幾乎相同的事情,同時也可以在表單的構造函數中指定(因此需要提供處理函數)。
0
您可以從另一種形式更新以某種形式的數值做這樣的事......
表2碼
public event EventHandler<UpdatedEventArgs> updateEvent;
public class UpdatedEventArgs : EventArgs
{
public string SomeVal { get; set; } // create custom event arg for your need
}
protected virtual void OnFirstUpdateEvent(UpdatedEventArgs e)
{
if (updateEvent != null)
updateEvent(this, e);
}
private void button1_Click(object sender, EventArgs e)
{
UpdatedEventArgs eventData = new UpdatedEventArgs();
eventData.SomeVal = "test"; // set update event arguments, according to your need
OnFirstUpdateEvent(eventData);
}
public Form2()
{
InitializeComponent();
}
表1碼
public Form1()
{
InitializeComponent();
Form2 form2 = new Form2();
form2.updateEvent += new EventHandler<Form2.UpdatedEventArgs>(form2_updateEvent); // create event handler to update form 1 from form 2
form2.Show();
}
void form2_updateEvent(object sender, Form2.UpdatedEventArgs e)
{
if (e != null && e.SomeVal != null)
{
// Do the update on Form 1
// depend on your event arguments update the grid
//MessageBox.Show(e.SomeVal);
}
}
相關問題
- 1. 將參數從一種形式傳遞給另一種形式
- 2. 從一種形式閱讀bools到另一種形式c#
- 3. Rails:如何將參數從一種形式傳遞到另一種形式
- 4. 如何在c#中將數據從一種形式發送到另一種形式?
- 5. C#從另一種形式
- 6. C#從另一種形式
- 7. 從另一種形式調用工具到另一種形式?
- 8. C#Winforms:將一種功能從一種形式傳遞給另一種形式?
- 9. C#發送從數據庫中選定值從一種形式到另一種形式
- 10. 將信息從一種形式傳遞給另一種形式?
- 11. 從一種形式到另一種形式的計時器值
- 12. 使用Alpacajs從一種形式導航到另一種形式
- 13. php htmlspecialchars()從一種形式到另一種形式
- 14. 如何在Asp.net中將值從一種形式傳遞到另一種形式
- 15. 在Qt中將變量從一種形式傳遞到另一種形式
- 16. 在vb.net中將變量從一種形式傳遞到另一種形式
- 17. 將數據從一種模式發送到另一種模式
- 18. 如何將HTML數組從一種形式傳遞到另一種形式
- 19. 如何將圖形發送到另一種形式
- 20. 如何將數據從一種形式發佈到另一種形式iFrame形式
- 21. 發送價值爲另一種形式
- 22. 傳遞String與另一個形式從一種形式在C#
- 23. 另一種形式
- 24. 從另一種形式
- 25. 從另一種形式
- 26. 從另一種形式
- 27. 從另一種形式
- 28. 從另一種形式
- 29. 試圖在angularjs中從一種形式轉到另一種形式
- 30. 將簡單的字符串從一種形式傳遞到另一種形式