如何知道C#中最后点击的文本框?

时间:2015-11-17 18:37:40

标签: c# winforms

这不是重复的问题,这里有一个类似的问题,但它的答案对我没有帮助。

我在form1(windows窗体)上有一个按钮和3个textBox,显示的代码实现了以下功能:

通过单击按钮,它将其文本键入最后一次单击的文本框,并且它完美,因为所有3个框都是文本框类型。 现在我想在form1中添加一个richTextBox,我希望这个richTextBox的行为与3个文本框相同(我的意思是当我点击richTextBox时我仍然可以输入文本)。在这种情况下,我有一个混合控件(textBoxes和richTextBox),如果它只是richTextBoxes或只有textBoxes,那么它很容易解决。

我需要修改这个代码,以便其中一个控件(3个textBox和richTextBox)在被点击时被聚焦,然后button1知道点击了哪个框,这样它就可以在其中插入文本。可以请任何人帮我这个。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public TextBox Selected_TextBox = null ;

    private void Form1_Load(object sender, EventArgs e)
    {
        this.ActiveControl = textBox1;
        textBox1.Focus();   // set textbox1 foucsed when form1 loads
        Selected_TextBox = textBox1;  // idintify the SelectedTextBox.
    }

    private void textBox1_Click(object sender, EventArgs e)
    {
        Selected_TextBox = sender as TextBox; // bcomes the selected one in click event
    }

    private void textBox2_Click(object sender, EventArgs e) 
    {
        Selected_TextBox = sender as TextBox; 
    }

    private void textBox3_Click(object sender, EventArgs e) 
    {
        Selected_TextBox = sender as TextBox;         
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Selected_TextBox.Focus(); 
        Selected_TextBox.SelectedText = button1.Text;
        Selected_TextBox.SelectionStart = Selected_TextBox.Text.Length;
    }
}

1 个答案:

答案 0 :(得分:6)

使用TextBoxBase这是TextBoxRichTextBox之间的公共基类。