100分求难题答案,高手快来!

symbol_bc 2008-10-06 03:03:18
我在做一个c# 的winform程序,功能是将一个窗口中的一些文本框,下拉框中的信息插入数据库中。
在用户单击“插入”后,“插入”按钮不可用,只用用户在修改了窗口中的任意一个控件的内容的时候,“插入”按钮重新可用,大虾们,怎么实现?我想了最笨的方法就是所有控件都注册TextChange事件或者SelectIndexChange事件,然后增加一个全局的变量做标志位控制“插入”按钮。有没有好的方法呢??????因为控件比较多,所有textbox和combobox加一起有十几个。
...全文
173 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
symbol_bc 2008-10-06
  • 打赏
  • 举报
回复
cancerser,谢谢你,不知道你还能不能看见了,你说的方法好复杂,我都看不懂,我觉得slin60地方法挺好,也就是22楼的方法,虽然我还没有调通,这些方法确实没有改变实质,但都把代码最简单化了,谢谢你!!向你学习
cancerser 2008-10-06
  • 打赏
  • 举报
回复
迷糊,楼主你说的 和 slin60 说的有啥区别?
你难道没有单独的SelectIndexChange事件?
我还考虑是不是写个接口 由你的TextBox CmdBox继承那,好统一事件(接口里自定义事件,分在两个实例实现)
后来合计消息过滤,最简单是把鼠标和键盘的事件过滤,写一个方法判断获得鼠标或键盘消息时对结果完整性

看来没我啥事了
周公 2008-10-06
  • 打赏
  • 举报
回复
foreach(Control c in this.Controls)
{
if(c is TextBox)//如果控件是TextBox类型的控件
{
c.TextChanged+=new System.EventHandler(TextBox_TextChanged);//添加事件处理程序
}
}

public void TextBox_TextChanged(object sender,EventArgs e)
{
btnInsert.Enable=true;//如果任何一个TextBox控件的值发生变化,btnInsert控件就可用
}

上面的办法如何?
abcyzq 2008-10-06
  • 打赏
  • 举报
回复
赶紧接点分,楼主等我接分。
slin60 2008-10-06
  • 打赏
  • 举报
回复
以你以前的想法,如果有十几个控件,你可能有十几个TextBox1_TextChanged(object sender, EventArgs e)之类的方法

如果按照我说得那样做,你就只剩下一个方法了。这还不简单啊?
symbol_bc 2008-10-06
  • 打赏
  • 举报
回复
slin60方法不错,那就结贴吧
slin60 2008-10-06
  • 打赏
  • 举报
回复
我给你的方法难道不好吗?我觉得那样刚好就是你需要的吧?
symbol_bc 2008-10-06
  • 打赏
  • 举报
回复
cancerser说他会,等等他再结贴
zbking 2008-10-06
  • 打赏
  • 举报
回复
帮顶接分
symbol_bc 2008-10-06
  • 打赏
  • 举报
回复
可惜我不是vb,感觉vb好高级啊!看来不论怎么写都不能少写代码,只能是把代码写到一块好维护罢了
essenza 2008-10-06
  • 打赏
  • 举报
回复
以下为VB代码:
Private Sub Insert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Insert.enable=false
insert_db()
end sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Insert.enable=ture
End Sub

Private Sub 数据控件_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Insert.enable=ture
End Sub





zx005 2008-10-06
  • 打赏
  • 举报
回复
for (int i = 0; i < 4; i++ )
{
this.Controls[i].TextChanged += new System.EventHandler(this.textBox1_TextChanged);
}
slin60 2008-10-06
  • 打赏
  • 举报
回复
SAPBO 是不是你马甲啊?

你把所有控件的TextChange和SelectIndexChange事件都注册到一个方法上

只要事件签名参数为object sender, EventArgs e都没有问题
joycornwu 2008-10-06
  • 打赏
  • 举报
回复
不太懂啊 还是问问高手吧
zx005 2008-10-06
  • 打赏
  • 举报
回复
试试用Form.Contols 绑定 TextChanged += new System.EventHandler()事件看行不行?
surrow 2008-10-06
  • 打赏
  • 举报
回复
感觉 即使有别的方法 也和lz的是一个意思
symbol_bc 2008-10-06
  • 打赏
  • 举报
回复
好的 我等着 呵呵 好想知道是怎么实现的,我总感觉是和委托之类的有关的方法
yygyogfny 2008-10-06
  • 打赏
  • 举报
回复
cancerser 2008-10-06
  • 打赏
  • 举报
回复
有到是有,你可能觉得别扭。
先占坑 我给你写写简单例子
symbol_bc 2008-10-06
  • 打赏
  • 举报
回复
哦 好失望 2星的大将都这么说,看来没戏了
加载更多回复(4)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧