我有六个文本框。
|TB1| |TB102| |TB103|
|TB2| |TB202| |TB203|
这是我的代码:
private void TB_Half_TextChanged(object sender, EventArgs e)
{
TextBox tbFull = (TextBox)sender; //determine which textbox is changed
TextBox tbHalf = (TextBox)sender; //save the name to add 02 to it later
// tbHalf == tbFull + "02";?
int ATTFull = Convert.ToInt32(tbFull.Text); //convert textbox to integer
int ATTHalf = ATTFull / 2; //divide by 2
string STRback = Convert.ToString(ATTHalf); //convert integer to textbox
//tb.Name = TBHalf + "02"; //add 02 to tb name
TB102.Text = STRback; //result in TB box 02
//how do I use TbHalf instead?
//I need to take tbHalf and add 02 to it so I can use this code on any TextBox.
}
我一直试图解决这个问题但是一旦我进入[get] [set]和更复杂的代码,我就会失去它。我是一名平面设计师,不是真正的程序员,但我正在努力学习。
答案 0 :(得分:0)
您要做的是“更改”声明变量的名称,这没有任何意义。变量的名称是不可变的 - 一旦设置了名称,就无法更改它。那是因为变量的名称本身不是值,而是您正在使用的变量的任意标识符。
据我所知,您正在尝试确定两个文本框中的哪一个触发了事件。但是,使用:
TextBox tbFull = (TextBox)sender;
TextBox tbHalf = (TextBox)sender;
不会帮助您确定哪个文本框触发了该事件。它所做的就是给你两个变量,指向内存中完全相同的值,这是多余的。
为此,您需要在设计器视图中(在“属性”框中的“名称”下)为文本框指定不同的名称,然后对发件人使用这些名称来确定触发事件的文本框。
private void TB_Half_TextChanged(object sender, EventArgs e)
{
// Determine the source and target boxes
TextBox source = (TextBox)source;
TextBox target;
if (sender == TB1)
target = TB102; // TB1triggered the event, so update TB102
else if (sender == TB102)
target = TB103; // TB102 triggered the event, so update TB103
else
return; // Somehow something else triggered the event,
// and we don't know what to do when that happens
// Whichever text box triggered the event, the math is the same
target.Text = Convert.ToString(Convert.ToInt32(source.Text) / 2);
}