在C#中获取当前关注的文本框

时间:2010-05-30 03:51:41

标签: c# winforms

我有两个文本框和一个按钮。当我按下按钮时,我想知道我当前的插入符号(两个框中的任何一个)。我需要知道在哪里插入某个文本。我试过textbox1.Focused; textbox1.enabled但是没有奏效。我该如何实现呢?感谢

2 个答案:

答案 0 :(得分:14)

请注意,当您点击该按钮时,您的文本框将不再具有焦点。 按钮的点击事件之前,你需要一种方法来跟踪的焦点。

尝试这样的事情

public partial class Form1 : Form
{
    private TextBox focusedTextbox = null;

    public Form1()
    {
        InitializeComponent();
        foreach (TextBox tb in this.Controls.OfType<TextBox>())
        {
            tb.Enter += textBox_Enter;
        }
    }

    void textBox_Enter(object sender, EventArgs e)
    {
        focusedTextbox = (TextBox)sender;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (focusedTextbox != null)
        {
            // put something in textbox
            focusedTextbox.Text = DateTime.Now.ToString();
        }
    }
}

答案 1 :(得分:1)

有一种非常简单的方法可以做到这一点。 您的要求很简单,因为您只有两个文本框。

您可以指定在调用textbox1_GotFocus()时保留的类范围字符串变量以及textbox2_GotFocus()。 因此,如果调用textbox GotFocus(),则指定一个值。 然后在按钮中为类范围的字符串变量设置一个条件,如果类范围的变量具有那种类型的值,则该文本框将填充在文本框中的任何内容。

它对我有用,所以我相信它应该适用于你。