[英]Winform: How to display form controls only when all controls have been loaded?
[英]How would I check all the controls on a winform to make sure none of them have been edited before changing what's displayed?
技術:C#、.Net、Winforms
我有一個從數據庫中提取數據並填充許多不同控件的主窗體。 標簽、文本框、DataRepeaters、DataGridViews 和選項卡也填充了這些類型的控件。
但是,數據也以這樣一種方式被提取,即在此表單上有多個“記錄”由 BindingNavigator 導航。
由於我的代碼結構,我不能輕易地在任何正在驗證的控件上調用 DataAdaptor.update() (使用它的關聯 DataTable),所以我只使用提交按鈕。
我想知道的是“如何檢查所有控件以查看它們是否已被編輯?”
我正在使用綁定導航器按鈕作為“FindEditedControls()”的觸發器
當前解決方案:
DataTable dt = db.GetTable();
dt.RowChanged += new DataRowChangeEventHandler(dtUpdated);
private void dtUpdated(object sender, DataRowChangeEventArgs e)
{
needsCommit = true;
}
按鈕只檢查 needsCommit boolean 變量。 如果是真的,那么它會要求用戶在繼續之前提交更改。 如果他們單擊“是”,則它將數據提交到數據庫。
如果這是你得到的,我要感謝你。 這與 DataGridViews 配合得非常好。 現在使用標准表單控件對其進行測試。
連接到DataTable.RowChanged
事件。 當它觸發時,您的一個控件已被編輯。
然后,您可以檢查DataRow.RowState
屬性以獲取要綁定到的行的DataRowState.Modified
值。
從綁定到它的數據中為每個控件分配一個簽名,然后使用控件的值檢查該簽名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.