首页 新闻 会员 周边 捐助

winforms界面的其中一个textbox的值发生改变后提示是否保存?

0
悬赏园豆:5 [已解决问题] 解决于 2013-08-07 12:54

winforms界面的其中一个textbox的值发生改变后提示是否保存?

这个怎么弄啊 

界面中有好多个textbox 也有richtextbox 

richtextbox 是显示的一个控件,他的值发生改变不需要询问是否保存

只是所有的textbox的值,有一个发生了改变才询问。

我只想在点击开始按钮的时候询问配置发生了改变 ,是否保存

然后进行保存操作

.F.的主页 .F. | 初学一级 | 园豆:13
提问于:2013-08-06 14:54
< >
分享
最佳答案
0

不多说!

private Hashtable htInit = new Hashtable();

        /// <summary>
        /// 将界面上TextBox的初始值记录到Hashtable中
        /// </summary>
        private void InitControlTextToHashtable()
        {
            foreach (var c in this.Controls)
            {
                if (c.GetType() == typeof(TextBox))
                {
                    TextBox tb = c as TextBox;
                    htInit.Add(tb.Name, tb.Text);
                }
            }
        }

        /// <summary>
        /// 验证TextBox控件的值是否变化
        /// </summary>
        /// <returns></returns>
        private bool ValidateTextValueChanged()
        {
            foreach (string name in htInit.Keys)
            {
                TextBox tb = this.Controls[name] as TextBox;
                if (tb.Text != htInit[name].ToString())
                {
                    return false;
                }
            }
            return true;
        }
收获园豆:5
幻天芒 | 高人七级 |园豆:37207 | 2013-08-06 16:05

嗯 这个我试试   ...

.F. | 园豆:13 (初学一级) | 2013-08-06 17:43

我的textbox控件是在groupBox1中的

而且是有两个不同的groupBox,里面的textbox都要判断啊? 

 private void InitControlTextToHashtable()
        {
            foreach (var c in this.Controls)
            {
                if (c.GetType() == typeof(TextBox))
                {
                    TextBox tb = c as TextBox;
                    htInit.Add(tb.Name, tb.Text);
                }
            }
        }

我运行着就出问题了

.F. | 园豆:13 (初学一级) | 2013-08-07 13:15

@.F.: 在第一轮初始化的时候,用递归遍历控件,或者针对两个GroupBox单独处理

幻天芒 | 园豆:37207 (高人七级) | 2013-08-07 13:18

@幻天芒: 嗯  明白了

.F. | 园豆:13 (初学一级) | 2013-08-07 13:44
其他回答(3)
1

用 EditChange 事件标注当前界面是否有控件的值被修改。

Launcher | 园豆:45050 (高人七级) | 2013-08-06 15:02

没有这个事件啊.你所说的是哪个控件的事件,是窗体的么?

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2013-08-06 15:58

@.F.: TextBox.TextChanged 事件

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2013-08-06 16:01
0

循环窗体控件,所有文本控件绑定委托,这样就不用每个控件去写触发事件了。

清海扬波 | 园豆:825 (小虾三级) | 2013-08-06 15:55

嗯这样也可以就是咯...谢谢你哈

支持(0) 反对(0) .F. | 园豆:13 (初学一级) | 2013-08-07 12:54
0

二楼的做法就可以实现

不负春光,努力生长 | 园豆:1382 (小虾三级) | 2013-08-06 22:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册