作者tramp ( )
看板C_Sharp
标题[问题] 关於button.click
时间Tue Mar 10 01:49:58 2009
只设定了一个button和TextBox
分别在按下键盘X Y Z的时候会出现
我想要让我可以分别输入X Y Z的值
程式码如下
//这边是当按下X Y Z的时候 会设定dim为何 (ex:X的话dim就是1)
//然後去跑DataReal这个函数
if ((int)(byte)e.KeyCode == 'X')
{
dim = 1;
this.DataReal();
}
if ((int)(byte)e.KeyCode == 'Y')
{
dim = 2;
this.DataReal();
}
if ((int)(byte)e.KeyCode == 'Z')
{
dim = 3;
this.DataReal();
}
//宣告button和textbox 以及 字串Xw Yw Zw
TextBox tb = new TextBox();
System.Windows.Forms.Button b = new System.Windows.Forms.Button();
String Xw,Yw,Zw;
public void DataReal()
{
//将tb和b加入到controls底下
this.Controls.Add(tb);
this.Controls.Add(b);
//这边是button按下时候的反应呼叫
this.b.click += new System.EventHandler(this.OnButton);
}
//底下是按下button之後的反应
private void OnButton(object sender, System.EventArgs e)
{
switch (dim)
{
case 1:
Xw = tb.Text;
//将tb中的字串丢给Xw
break;
case 2:
Yw = tb.Text;
break;
case 3:
Zw = tb.Text;
break;
default :
break;
}
//然後这是我测试效果的地方
Console.WriteLine("Xw: " + Xw);
Console.WriteLine("Yw: " + Yw);
Console.WriteLine("Zw: " + Zw);
Console.WriteLine("");
//清除掉tb中的字串 为了让下一次输入时是空白
tb.Clear();
//因为某些原因 我必须要把button和textbox先隐藏起来
this.Controls.Remobe(b);
this.Controls.Remove(tb);
}
我的操作过程是这样的
当我按下了X 则会出现button和textbox
此时例如我输入了123然後按下button
那console会写下
Xw:123
Yw:
Zw:
并且button和textbox都消失
这个时候我再按下Y button和textbox会再出现
假设我输入了456然後按下button
那console会写下
Xw:123
Yw:456
Zw:
Xw:123
Yw:
Zw:
会跑两次OnButton
且原本是为了方便让我不用每次按backspace把textbox中的值清除的
b.clear()
反而把Y的值清掉了 (因为清除掉了 Yw又读了一次 於是Yw变成null)
若再进行Z 输入789
则会是
Xw:123
Yw:
Zw:789
Xw:123
Yw:
Zw:
Xw:123
Yw:
Zw:
变成执行了三次
以此类推下去
个人估计是因为再写button按下的反应的时候
b.click
+= new System.EventHandler(this.OnButton)
其中的+=造成程式一直累加读取this.OnButton的次数
请问板上各位大大
这个问题该如何解决?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.44.27
1F:→ tramp:自问自答...因为每次呼叫DataSave的时候,都会进行一次 03/10 10:08
2F:→ tramp:this.Controls.Add(b); 所以b.Click += 好像就会被累加上去 03/10 10:09
3F:→ tramp:所以後来再OnButton的地方增加一个只做一次的限制就好了 03/10 10:10
4F:推 help0430:你在NEW BUTTON的地方直接加上事件不就好了~ 03/10 10:14
5F:→ help0430:不用在DATAREAL里加阿 03/10 10:15
6F:→ tramp:推文第一行打错 是DataReal 03/10 10:34
7F:→ tramp:感谢help大~~ 03/10 11:34