我有一個帶有menutrip的Winform新建,打開,保存和諸如此類的東西:Textbox 如何檢測文本框中未保存的數據並彈出一個窗口,要求用戶在關閉程序時保存其數據? 我尊重你的所有建議。檢測未保存的數據
檢測未保存的數據
回答
定義一個名爲isDataChanged的布爾變量並將其設置爲false。在文本框的按鍵事件上將此變量設置爲true。當用戶關閉程序時,檢查這個變量是否爲真。如果這是真的顯示一條消息,當用戶保存數據,將其設置爲false,否則退出程序:)
您需要註冊的所有文本框更改事件時知道文本框的文本改變或不
private void Form1_Load(object sender, EventArgs e)
{
var c = GetAll(this,typeof(TextBox));
foreach (TextBox item in c)
item.TextChanged += new EventHandler(textBox1_TextChanged);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
//set textbox tag = true to check whether text changed or not
((TextBox)sender).Tag=true;
}
public IEnumerable<Control> GetAll(Control control,Type type)
{
var controls = control.Controls.Cast<Control>();
return controls.SelectMany(ctrl => GetAll(ctrl,type))
.Concat(controls)
.Where(c => c.GetType() == type);
}
// now you can get changed checkbox
List<TextBox> getchangedtextbox(){
var c = GetAll(this,typeof(TextBox));
// not get list of changed checkbox witch have null value in TAG
return c.Select(a=>a.Tag!=null);
}
我同意你的解決方案,並且我面臨未保存的列表
你可以發佈你的代碼示例,我們可以理解擊球手.. – 2014-08-29 11:05:21
我認爲這個語句'返回c.Select(a => a.Tag!= null);'將返回c.Select(a => a.Tag!= null).ToList();' – 2014-08-29 11:12:16
您可以使用的一種方法是定義一個boolean
變量,如bDirty
。
首先聲明這個變量作爲FALSE
,但把它真正在你_TextChanged
事件 - 例如myTextBox_TextChanged
(所以bDirty
將現在TRUE
如果文本框被編輯)
在關閉/退出,然後檢查bDirty
並顯示出如果消息框是bDirty
TRUE
如下:
if (bDirty)
{
DialogResult result = MessageBox.Show("Do you want to save changes?", "Confirmation", messageBoxButtons.YesNoCancel);
if(result == DialogResult.Yes)
//... Do something
else if (result == DialogResult.No)
//...Do something esle
else
//...Do something else - go wild!
}
希望這可以幫助你!
- 1. JPA-Hibernate保存未保存的數據
- 2. HABTM數據未保存(cakephp)
- 3. 遷移數據未保存
- 4. exif數據未保存
- 5. 核心數據:未保存
- 6. CakePHP HABTM數據未保存
- 7. 未保存核心數據數據
- 8. 未保存到數組的數據
- 9. Canonical Java EE檢查未保存會話數據的方式?
- 10. validates_uniqueness_of無法檢查未保存的數據?
- 11. sqlite3的數據庫未保存的iOS
- 12. 未保存的更改檢測的實施
- 13. 單元測試Zendframework:未能保存元數據metadataCache
- 14. 在數據控制中保存未保存的數據的策略
- 15. makefile未檢測到新的保存文件
- 16. 數據庫保存和檢索上次保存的值
- 17. 未保存的ivars的單元測試
- 18. 檢測ASP.NET中是否存在所有數據庫保存的資源
- 19. 數組未保存?
- 20. factorygirl在測試前保存數據
- 21. 未將JSON數據保存在WebAPI中
- 22. time_zone未保存在數據庫中
- 23. update_attributes未保存到數據庫
- 24. 數據未徹底保存phpmyadmin
- 25. 文件未保存在數據庫中
- 26. 數據未保存在變量中?
- 27. 數據未保存在服務器
- 28. 數據未被保存在autoit中
- 29. 單選按鈕數據未保存
- 30. 使用$資源時未保存數據
使用標誌,並在使用textbox,textchanged事件時重置。然後該標誌可以用於檢測用戶是否編輯任何東西 – 2014-08-29 11:01:08