小问题 小技巧 来着有分~

美丽大道 2009-01-12 09:33:36
如题 我现在有个Winform 的程序 里面有很多属性 如下:


CheckBox1 TextBox1
CheckBox2 TextBox2
CheckBox3 TextBox3
CheckBox4 TextBox4
CheckBox5 TextBox5
CheckBox6 TextBox6
....

类似的情况 ,就是有很多CheckBox,分别对应了相应的TextBox。 当某个CheckBox被选中后对应的TextBox就变为可用,反之则变为不可用。但是我要是一个一个事件处理的话觉得方法会很多(大概有十几个),很不科学,因为他们的逻辑是一样的,不同的只是变量的名称,请教面向对象的高手们,如何能比较简单的处理这个问题!

不知道我的描述是否清楚,谢谢各位高手赐教

...全文
352 67 打赏 收藏 转发到动态 举报
写回复
用AI写文章
67 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinaicm 2009-01-21
  • 打赏
  • 举报
回复
使用用户控件思路非常清晰,需要什么都还可以封装.
大头_衍 2009-01-21
  • 打赏
  • 举报
回复
路过
xiaoyanwei2000 2009-01-21
  • 打赏
  • 举报
回复
学习了,个人更倾向于14楼的方法
美丽大道 2009-01-21
  • 打赏
  • 举报
回复
  string control = (sender as CheckBox).Name;//获取checkbox名称 
control = control.Replace("checkBox", "textBox");

((TextBox)(sender as CheckBox).Parent.Controls[control]).Enabled = (sender as CheckBox).Checked;

((TextBox)(sender as CheckBox).Parent.Controls[control]).Text = "";



这是我第一个问题用的方法 没有用用户控件, 现在在button中要获得所有被选中的checkbox 怎么获得
美丽大道 2009-01-21
  • 打赏
  • 举报
回复
又出现一个问题


现在我有个确定按钮,当单击确定按钮时,我要把所有的被选中的checkebox得到,进而对和它对应的textbox进行操作,请问这个怎么遍历选中所有的checkbox呢!


renhua19831012 2009-01-21
  • 打赏
  • 举报
回复
在事件里用SWITCH,看是哪个CHECKBOX点击了,然后将对应的TEXTBOX显示
Sugar_Tiger 2009-01-13
  • 打赏
  • 举报
回复
写个函数:
然后调用就行

private void ControlStateOfTextBox(CheckBox cb, TextBox txb)
{
if(cb.Check)
{
txb.Enable=true;
}
els
{
txb.Enable=false;
}
}
ljm66 2009-01-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sunrobust 的回复:]
写一个事件处理方法, 所有的选定事件都绑定到这个方法上.

方法内判断sender, 从而决定textbox
[/Quote]
我也建议这种方法
yuanhuiqiao 2009-01-13
  • 打赏
  • 举报
回复
可借鉴控件数组类似的做法,自定义控件也不错
whn1119 2009-01-13
  • 打赏
  • 举报
回复
mark
流年岁月 2009-01-13
  • 打赏
  • 举报
回复
学习了
yunjixingkong 2009-01-12
  • 打赏
  • 举报
回复
学习下
qqiuzaihui 2009-01-12
  • 打赏
  • 举报
回复
switch (((CheckBox)sender).Name.ToString())
{
case "checkBox1":
textBox1.enable=((CheckBox)sender).checked;
break;
case "checkBox2":
textBox2.enable=((CheckBox)sender).checked;
break;
...........
default:
break;
}

支持 [14楼] 的做法, 他的比我还要简单一些.
junying2yu 2009-01-12
  • 打赏
  • 举报
回复
up up
wuyq11 2009-01-12
  • 打赏
  • 举报
回复
通过delegate实现
苗苗的爹 2009-01-12
  • 打赏
  • 举报
回复
写一个函数不就解决了.
q343452855 2009-01-12
  • 打赏
  • 举报
回复
都写在一个事件中,每一项都写他的Tag值,从1...n 用循环将他完成
liberpc 2009-01-12
  • 打赏
  • 举报
回复
写一个函数分类处理
jacklee_008 2009-01-12
  • 打赏
  • 举报
回复
UP
nealwike 2009-01-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gisfarmer 的回复:]
所有的操作相应一个事件,你写一个事件处理函数就行了啊。没必要写那么多的事件啊、
[/Quote]

CheckBox1 + TextBox1 封装为usercontrol

这两个方法都不错,

个人偏向第二个.
加载更多回复(46)

110,536

社区成员

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

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

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