【问题标题】:Message box causes loss of focus消息框导致失去焦点
【发布时间】:2009-04-15 05:18:03
【问题描述】:

我创建了一个包含三个控件的工具栏。第一个是文本框、确定按钮和清除按钮。本质上,我使用这个工具栏来搜索一些文本。当没有找到结果时,我会弹出一个消息框通知用户没有找到结果。但是当用户单击消息框的“确定”按钮时,文本框失去焦点,焦点传递到下一个控件,即“确定”按钮。我应该怎么做才能避免文本框失去焦点。我正在使用 c#。

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    你不能。点击 Ok 按钮强制它拥有控制权(因此文本框失去控制权)。

    但是,您可以在点击事件上执行此操作:

    MessageBox.Show("asdf");
    textBox1.Focus();
    

    编辑

    针对您的评论,我认为没有一种简单的方法可以在另一个控件获得焦点后将焦点返回到最后一个控件,并且单击时搜索和清除按钮必须获得焦点。你可以这样做:

    private Control _last;
    
    private void textBox1_Leave(object sender, EventArgs e)
    {
        _last = (Control) sender;
    }
    
    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("asdf");
        _last.Focus();
    }
    

    【讨论】:

    • 感谢您的回复。我想知道是否有任何方法可以在不明确设置文本框焦点的情况下解决此问题。
    【解决方案2】:

    你的问题不是很清楚,但你可以像这样让你的控件获得焦点:

    textBox1.Focus();
    

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 2012-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多