繁体   English   中英

C#Windows表单计算器-每次单击选择文本框

[英]C# Windows forms Calculator - Selecting textbox per click

首先,我是德国人,2。这是我的计算器的屏幕截图..有点奇怪,但我知道xD

我的UI

因此,我正在寻找一个命令:

我有4个文本框,第一个是1.数字(textBox1),数字是1. 2.(one-textBox2)是运算符(+-* /),3.是2.数字,而4.是。结果

如果我做:

private void button3_Click(object sender, EventArgs e)
 {
  textBox1.SelectedText += "1";
  textBox3.SelectedText += "1";

 }

要么

private void button3_Click(object sender, EventArgs e)
 {
  textBox1.Text = textBox1.Text + "1";
  textBox3.Text = textBox3.Text + "1";
 }

现在,两个文本框中都显示了我单击的按钮中的数字(1.和3.一个)。 但我希望我单击的按钮的编号将在我首先选择的文本框中。 因此,我首先只需单击一下即可选择textbox1或textbox3,然后单击一个按钮(例如1),然后数字1将出现在我选择/单击的文本框中。

在两个文本框的_Activate事件上,存储激活了哪个框。 然后在_Clicked事件中使用它:

private TextBox currentTextBox;

 // Both textboxes can use this function
private void textbox_Activate(object sender, EventArgs e)
{
        this.currentTextBox = (TextBox) sender;
}

private void button3_Click(object sender, EventArgs e)
{
         currentTextBox.Text = textBox1.Text + "1";
}

您可以具有一个全局变量TextBox textBoxSelected,然后在事件textBox1_ClicktextBox3_Click中设置该变量。 稍后在button3_Click中,选择选中的文本框并添加逻辑。 尝试这个:

TextBox textBoxSelected;
private void txtBox1_Click(object sender, EventArgs e)
{
    textBoxSelected = textBox1;
}
private void txtBox3_Click(object sender, EventArgs e)
{
    textBoxSelected = textBox3;
}
private void button3_Click(object sender, EventArgs e)
{
    textBoxSelected.Text += "1";
}

我不太理解您的问题,但是我注意到您的逻辑上有一个问题。

C#将它们添加为字符串,从而导致串联。

首先将值转换为整数,它将正确添加。

textBox1.Text = int.Parse(textBox1.Text) + 1;

至于您的实际问题,如果您想“记住”您单击了哪个文本框,请将一个事件添加到Click事件中,以存储您在变量中选择的文本框控件,然后在您的变量中使用它逻辑。

因此,这里是一些解决方案:1 /命名约定:使用明确的名称来引用按钮功能或文本框内容。 例如说:TextboxLeftOperand,ButtonN1,TextboxOperator,... 2 /使用一个名为SelectedTextbox的新变量var SelectedTextbox = new Textbox();。 3 /将两个选定文本框的分配添加到两个文本框的click事件中。 对于左边的文本框:SelectedTextbox = TextboxLeftOperand //文本框1对于右边的文本框SelectedTextbox = TextboxRightOperand //文本框1。现在,您所拥有的就是使用新变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM