我有兩個win窗體,f1和f2。當我點擊f1上的datagridview的行標題時,f1 hide,f2顯示,並且數據從f1傳遞到f2。現在用戶在f2上工作並點擊「關閉」後,f2隱藏和f1顯示。我在f1中創建了函數來捕獲用戶對數據庫所做的任何更改。問題是我如何自動調用這個函數,而不是在f2 hide和f1顯示時使用按鈕?謝謝。當窗體再次出現時,自動運行一個函數C#
回答
活動名爲Shown
。每次窗體重新出現時都會運行。
我希望這會有所幫助。
編輯:
試試這個:
this.Hide();
f2.ShowDialog();
MethodUpdateValues();
this.Show();
這將暫停在第二線,並繼續當您關閉F2。
問題是我如何可以調用這個函數自動而不是使用 按鈕
的嘛,然後調用該函數在窗體構造函數或處理FormLoad事件並調用事件處理函數。
我看不到-1的理由,這是正確的答案 –
謝謝。 Load事件在f1第一次出現時觸發,在它隱藏並重新出現load事件後再次觸發?我不這麼認爲。也許還有其他一些事件。 – Viviannne
在隱藏Form1(f1)之前和Form2(f2)創建過程之後,傳遞給f2一個Action委託,當它關閉時,它將由f2調用。此委託方法將在Form1類內,將重新激活隱藏的實例
public class Form2: Form
{
public Action ReactivateParent;
.... form2 methods ....
// Here I call the ReactivateParent inside the FormClosed event handler
// of Form2, but these lines can also in a button click event
// that terminates the Form2 instance....
protected void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
if(ReactivateParent != null)
ReactivateParent();
}
}
現在在Form1上,當你準備顯示窗體2實例綁定的Action委託
Form2 f2 = new Form2();
f2.ReactivateParent += ReactivateMe;
this.Hide
f2.Show();
...
,並添加一個方法到Form1命名ReactivateMe
private void ReactivateMe()
{
// Add here whatever you need to update your Form1 instance....
....
// Reshow the now updated Form1 instance...
this.Show();
}
這種方法的優點在於這樣一個事實:Form2的是不關心什麼是在ReactivateParent和所有其他形式進行在您的應用程序中可以重用Form2的功能,並在Form2實例關閉時通知。
爲了進一步改進這種模式,您還可以考慮修改Action代理以接收將由Form2實例填充的自定義類的實例,並修改數據。這可以幫助避免調用數據庫來更新Form1實例。
- 1. 第一次滾動時運行函數,然後再次不再
- 2. 當幻燈片再次出現時再次動畫層
- 3. 當VS2010中打開窗體時,TFS會自動檢出一個窗體窗體
- 4. 讓窗體運行一個javascript函數?
- 5. 當循環再次運行時,爲什麼不輸出「請再試一次」?
- 6. JavaScript只運行一次函數,並避免在刷新時再次運行
- 7. Wordpress窗體小部件窗體函數運行兩次
- 8. 統計c#窗體窗體列表框中每個單詞的出現次數
- 9. Java循環StackoverflowError - 當同一個函數再次出現時,是否有可能繼續前一個循環?
- 10. 刪除一個數字在一個矢量中出現時出現多次出現時反向運行
- 11. 當一個循環在timer1_Tick函數內時出現C#錯誤
- 12. 當一個事件立即啓動一個函數,但等待x秒直到它能夠再次運行?
- 13. 定時器在C#中運行一次,那麼X秒運行後再次
- 14. 當我打開Firefox時自動運行一個C程序?
- 15. 函數遍歷循環並一次運行,但從未再次運行
- 16. Ant + Junit可以在第一次運行時再也不會再次運行
- 17. 當動畫窗口窗體滑入時,窗體出現在錯誤的位置
- 18. 當div出現時啓動函數
- 19. 運行一個函數只需一次
- 20. 從Main()以緊湊框架再次運行主窗體
- 21. Visual C++ Express .exe在第一次執行後再次運行
- 22. 每小時運行一次java函數
- 23. 當遊戲開始運行時運行一個函數iOS - SpriteKit
- 24. 停止函數如果仍在運行,請再次運行
- 25. 動畫第一次運行不順暢(鍵盤出現時)
- 26. 當通過函數運行df時出現KeyError
- 27. 當我運行插補函數的代碼時,出現錯誤
- 28. 用戶退出時C#運行函數
- 29. 函數只運行一次
- 30. 運行PHP函數一次
謝謝。我已經對Shown事件進行過測試。當f1第一次出現時,顯示的事件開始了,當f1再次出現並且f2隱藏時,顯示不再發射。我所希望的恰恰是在這個時候觸發功能。 – Viviannne
@Viviannne我做了一個新的方法。這會工作嗎? – MasterXD
謝謝,我剛剛看到你的更新。我在史蒂夫的解決方案上測試過,它運行良好。 – Viviannne