【问题标题】:Get the currently focused textbox in C#在 C# 中获取当前聚焦的文本框
【发布时间】:2014-07-20 01:59:56
【问题描述】:

我有两个文本框和一个按钮。当我按下按钮时,我想知道我当前的插入符号在哪里(两个框之一)。我需要这个来知道在哪里插入某个文本。我试过textbox1.Focusedtextbox1.enabled 但都没有工作。我应该如何实现这个?谢谢

【问题讨论】:

标签: c# winforms


【解决方案1】:

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

试试这样的

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();
        }
    }
}

【讨论】:

  • 谢谢!我必须 Textbox.GotFocus 而不是 Textbox.Enter
  • 正如@cod3-monk-3y 所说。我改为Gotfocus 活动。谢谢你们。真的很有效:)
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多