我是C#的新手,我正计划设计自己的键盘,但我不知道如何/从哪里开始。如照片所示,我有4个文本框的键盘按钮。
我想到的第一个问题是:如何检测光标位置(哪个textBox是光标?)。
因此,例如,如果我只有一个文本框,那么我很容易在button1中写入:textBox1.text =" 1"在button2内:textBox1.text =" 2"并且在button_A:textBox1.text =" A" ....等等但我有4个文本框,这让人感到困惑。
请您在每个按钮内向我提供一个想法或写些内容,以便在光标所在的文本框中打印其值。
谢谢专业人士。
答案 0 :(得分:3)
首先,有一个文本框代表所选择的文本框(在子例程之外但在类中):
TextBox SelectedTextBox = null;
然后制作"点击"每个TextBox的事件如下所示:
private void textBoxNUM_Click(object sender, EventArgs e)
{
SelectedTextBox = sender as TextBox;
}
然后制作"点击"每个Button的事件如下所示:
private void buttonNUM_Click(object sender, EventArgs e)
{
if (SelectedTextBox != null)
{
SelectedTextBox.Text = buttonNUM.Text;//Or set it to the actual value, whatever.
}
}
如果那个不起作用,这应该是。
private void buttonNUM_Click(object sender, EventArgs e)
{
if (SelectedTextBox != null)
{
(SelectedTextBox as TextBox).Text = buttonNUM.Text;//Or set it to the actual value, whatever.
}
}
答案 1 :(得分:0)
要检查文本框是否有焦点,您可以执行
if(textbox1.Focused)
{
//Print the value of the button to textbox 1
}
else if (textbox2.Focused)
{
//Print the value to textbox 2
}
更新:
由于单击按钮时文本框将失去焦点,因此您应该有一个临时文本框(即lastTextboxThatWasFocused),每次文本框获得焦点时都会保存该文本框。编写一个OnFocused方法并执行类似
的操作public void Textbox1OnFocused(/*Sender Event Args*/)
{
lastTextboxThatWasFocused=textbox1;
}
然后点击按钮即可
if(lastTextboxThatWasFocused.Equals(textbox1))
{
//ETC.
}
答案 2 :(得分:0)
你可以试试这些方面。为按钮创建一个通用的单击处理程序,然后将值从按钮分配给文本框,该文本框恰好是值。您可以在TextBoxes的Click事件中查看哪个框是最后一个框。创建一个全局变量来存储哪一个并在下面的方法中使用它。
private TextBox SelectedTextBox { get; set; }
private void NumericButton_Click(object sender, EventArgs e)
{
var clickedBox = sender as Button;
if (clickedBox != null)
{
this.SelectedTextBox.Text += clickedBox.Text;
}
}
private void TextBox_Click(object sender, EventArgs e)
{
var thisBox = sender as TextBox;
if (thisBox == null)
{
return;
}
this.SelectedTextBox = thisBox;
}
答案 3 :(得分:0)
试试这段代码:
TextBox LastTxtBox;
private void textBox_Enter(object sender, EventArgs e)
{
LastTxtBox = sender as TextBox;
}
private void button_Click(object sender, EventArgs e)
{
LastTxtBox.Text = this.ActiveControl.Text;
}
将textBox_Enter
函数添加到所有文本框中输入event。
将button_Click
添加到所有按钮点击事件。
答案 4 :(得分:0)
按钮进入事件
Control _activeControl;
private void NumberPadButton_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
if (_activeControl is TextBox || _activeControl is RichTextBox)
{
_activeControl.Text += btn.Text;
if (!_activeControl.Focused) _activeControl.Focus();
}
}
<块引用>
TextBox 或 RihTextBox 输入事件
private void TextBoxEnter_Click(object sender, EventArgs e)
{
_activeControl = (Control)sender;
}