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

nao*_*ouf 0 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ite 6

使用TextBoxBase它是TextBox和之间的共同基类RichTextBox.

  • 换句话说,将Selected_TextBox字段声明更改为:`public TextBoxBase Selected_TextBox = null;` (3认同)