虽然看起来很简单,但是却十分繁琐,比如按键的事件,一共要编写48个事件,而且每个事件所要触发的事情都差不多。虽然已经写了一个方法,把要做的事情都通过这个方法,删减了很多代码。但是有没有什么更加简便的方法,可以同时操作这些控件。
要操作的内容还有text内容的命名,picturebox 的图片显示等等。。
求大神帮忙解决 谢谢!
11 个解决方案
#1
相同类型的事件,写在同一个函数里面,然后sender as Button,根据Tag或者Name,进行判断是哪个按钮即可。
#2
谢谢,但还是不太明白。
有没有具体点的代码
#3
谢谢,但还是不太明白。有没有具体点的代码
#4
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
#5
根据一楼的意思随便写了个。
#6
对的,我的大概意思就是这样。
少量可以用if-else判断,多一些可以改为对Name属性进行switch判断。更多的话就有可能是设计的逻辑有问题了,考虑其他办法吧。
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
switch (btn.Name)
{
case 'A':
Bll.btnA_click();
break;
case 'B':
case 'C':
Bll.btnBC_click();
break;
case 'D':
Bll.btnD_click();
break;
case 'F':
Bll.btnF_click();
break;
default:
break;
}
另外, 控件的Tag属性Object Tag,也是很有用的,可以把任意数据绑定到这个Tag上。比如
输入法的0-9,A-Z,a-z,可以直接把字符作为Tag属性,使用时不需要知道哪个按钮,只需要(sender as Button).Tag.toString();
#7
你的知识基本上已经到了天花板。
要设几十个、上百个“差不多”的东西,你让要首先设计为 一个用户控件,然后只是单独设计几种子类用户控件、或者几类内嵌模板。然后每一种子类用户控件再扩展出几类孙类用户控件(或者孙类内嵌模板)。如此,明确地将非常简单的差别封装一下,从父类继承一大堆共同的界面和共同的流程躯干。
跟你说了恐怕你也不会懂这些,所以点到为止。总结一下,就是你目前是适合做点皮毛,能跟着别人写点简单的,还不能设计软件。
#8
一个专业的程序员,他的知识从设计控件(以及独立的样式文件、模板声明文件)开始起步。窗体上随时可以补充很简单的一些“胶水“程序,从自己团队已经开发好的一大堆业务控件中用鼠标拖拉出来一些,配置一下属性,迅速拼凑成用户需求的高级应用。
绝大多数业余编程爱好者,只是纠结于窗体,只会用鼠标拖拉一些低级的控件,而非高级的业务控件。于是面对稍微复杂一点的用户需求也就容易陷入困扰。爱用”越是低级的控件,性能越高“为借口。
专业和业余的区别,就在于自己开发控件的进度上。前者用90%时间开发控件,后者用1%都远远达不到的时间开发控件。因此当项目深入的时候,后者就只能逃避,深入不了。
绝大多数业余编程爱好者,只是纠结于窗体,只会用鼠标拖拉一些低级的控件,而非高级的业务控件。于是面对稍微复杂一点的用户需求也就容易陷入困扰。爱用”越是低级的控件,性能越高“为借口。
专业和业余的区别,就在于自己开发控件的进度上。前者用90%时间开发控件,后者用1%都远远达不到的时间开发控件。因此当项目深入的时候,后者就只能逃避,深入不了。
#9
谢谢指导了,说的东西对我非常有参考价值。
我是个新手,刚刚开始接触做个小项目。听了你这番话,发现自己还有真的有很多东西要学。虽然书也看过了,基本的东西也了解了,但在实际中,就连最基本的核心的东西--面向对象的思维,也忽略了。确实在编程的时候要多思考才行。
#10
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
原来sender还可以这样用,学到了,谢谢。
还有,请问这个点击事件是任何一个button点击都会触发的吗?
#11
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
原来sender还可以这样用,学到了,谢谢。
还有,请问这个点击事件是任何一个button点击都会触发的吗?
我明白了。。。。原来所有控件都绑定相同的时间。。。哈哈哈居然被自己蠢到了
#1
相同类型的事件,写在同一个函数里面,然后sender as Button,根据Tag或者Name,进行判断是哪个按钮即可。
#2
谢谢,但还是不太明白。
有没有具体点的代码
#3
相同类型的事件,写在同一个函数里面,然后sender as Button,根据Tag或者Name,进行判断是哪个按钮即可。
谢谢,但还是不太明白。有没有具体点的代码
#4
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
#5
根据一楼的意思随便写了个。
#6
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
对的,我的大概意思就是这样。
少量可以用if-else判断,多一些可以改为对Name属性进行switch判断。更多的话就有可能是设计的逻辑有问题了,考虑其他办法吧。
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
switch (btn.Name)
{
case 'A':
Bll.btnA_click();
break;
case 'B':
case 'C':
Bll.btnBC_click();
break;
case 'D':
Bll.btnD_click();
break;
case 'F':
Bll.btnF_click();
break;
default:
break;
}
另外, 控件的Tag属性Object Tag,也是很有用的,可以把任意数据绑定到这个Tag上。比如
输入法的0-9,A-Z,a-z,可以直接把字符作为Tag属性,使用时不需要知道哪个按钮,只需要(sender as Button).Tag.toString();
#7
界面主要是用tabcontrol,而tabcontrol分了8页,每一页都有差不多,都有6个picturebix,6个标签,再加上几个按钮。他们所要触发的事件都差不多,比如按钮都是点击事件,点击发生的事情都差不多,比如弹出一个新的窗口显示消息。
虽然看起来很简单,但是却十分繁琐,比如按键的事件,一共要编写48个事件,而且每个事件所要触发的事情都差不多。虽然已经写了一个方法,把要做的事情都通过这个方法,删减了很多代码。但是有没有什么更加简便的方法,可以同时操作这些控件。
要操作的内容还有text内容的命名,picturebox 的图片显示等等。。
你的知识基本上已经到了天花板。
要设几十个、上百个“差不多”的东西,你让要首先设计为 一个用户控件,然后只是单独设计几种子类用户控件、或者几类内嵌模板。然后每一种子类用户控件再扩展出几类孙类用户控件(或者孙类内嵌模板)。如此,明确地将非常简单的差别封装一下,从父类继承一大堆共同的界面和共同的流程躯干。
跟你说了恐怕你也不会懂这些,所以点到为止。总结一下,就是你目前是适合做点皮毛,能跟着别人写点简单的,还不能设计软件。
#8
一个专业的程序员,他的知识从设计控件(以及独立的样式文件、模板声明文件)开始起步。窗体上随时可以补充很简单的一些“胶水“程序,从自己团队已经开发好的一大堆业务控件中用鼠标拖拉出来一些,配置一下属性,迅速拼凑成用户需求的高级应用。
绝大多数业余编程爱好者,只是纠结于窗体,只会用鼠标拖拉一些低级的控件,而非高级的业务控件。于是面对稍微复杂一点的用户需求也就容易陷入困扰。爱用”越是低级的控件,性能越高“为借口。
专业和业余的区别,就在于自己开发控件的进度上。前者用90%时间开发控件,后者用1%都远远达不到的时间开发控件。因此当项目深入的时候,后者就只能逃避,深入不了。
绝大多数业余编程爱好者,只是纠结于窗体,只会用鼠标拖拉一些低级的控件,而非高级的业务控件。于是面对稍微复杂一点的用户需求也就容易陷入困扰。爱用”越是低级的控件,性能越高“为借口。
专业和业余的区别,就在于自己开发控件的进度上。前者用90%时间开发控件,后者用1%都远远达不到的时间开发控件。因此当项目深入的时候,后者就只能逃避,深入不了。
#9
界面主要是用tabcontrol,而tabcontrol分了8页,每一页都有差不多,都有6个picturebix,6个标签,再加上几个按钮。他们所要触发的事件都差不多,比如按钮都是点击事件,点击发生的事情都差不多,比如弹出一个新的窗口显示消息。
虽然看起来很简单,但是却十分繁琐,比如按键的事件,一共要编写48个事件,而且每个事件所要触发的事情都差不多。虽然已经写了一个方法,把要做的事情都通过这个方法,删减了很多代码。但是有没有什么更加简便的方法,可以同时操作这些控件。
要操作的内容还有text内容的命名,picturebox 的图片显示等等。。
你的知识基本上已经到了天花板。
要设几十个、上百个“差不多”的东西,你让要首先设计为 一个用户控件,然后只是单独设计几种子类用户控件、或者几类内嵌模板。然后每一种子类用户控件再扩展出几类孙类用户控件(或者孙类内嵌模板)。如此,明确地将非常简单的差别封装一下,从父类继承一大堆共同的界面和共同的流程躯干。
跟你说了恐怕你也不会懂这些,所以点到为止。总结一下,就是你目前是适合做点皮毛,能跟着别人写点简单的,还不能设计软件。
谢谢指导了,说的东西对我非常有参考价值。
我是个新手,刚刚开始接触做个小项目。听了你这番话,发现自己还有真的有很多东西要学。虽然书也看过了,基本的东西也了解了,但在实际中,就连最基本的核心的东西--面向对象的思维,也忽略了。确实在编程的时候要多思考才行。
#10
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
原来sender还可以这样用,学到了,谢谢。
还有,请问这个点击事件是任何一个button点击都会触发的吗?
#11
private void Form10_Load(object sender, EventArgs e)
{
//绑定按钮click事件
button1.Click += new EventHandler(button_Click);
button1.Click += new EventHandler(button_Click);
}
private void button_Click(object sender, EventArgs e)
{
Button btn = null;
if (sender is Button)
{
btn = (Button)sender;
}
if (btn==null)
{
return;
}
if (btn.Text == "按钮A")
{
//执行按钮A点击操作
}
else if (btn.Text == "按钮B")
{
//执行按钮B点击操作
}
}
原来sender还可以这样用,学到了,谢谢。
还有,请问这个点击事件是任何一个button点击都会触发的吗?
我明白了。。。。原来所有控件都绑定相同的时间。。。哈哈哈居然被自己蠢到了