【问题标题】:set focus to textbox in user control c#在用户控件c#中将焦点设置为文本框
【发布时间】:2014-01-27 05:45:54
【问题描述】:

我在 C# 窗体中创建了一个用户控件,比如 chatWindow,它有一个带有按钮的文本框。我在 MainForm 上放置了这个用户控件四次,比如 uc1、uc2、uc3、uc4。在 MainForm 上,我还有其他控件。现在我希望当用户按下 TAB 时,应该设置 uc1 文本框的焦点。应设置uc2文本框的第二次按tab键,也应设置第3个和第4个tab键。

我尝试设置这些用户控件的 TabIndex 但未能成功。我不知道如何在 MainForm 中获取用户控件的文本框属性。

【问题讨论】:

  • 您是否只想通过用户控件切换而忽略表单上的其他控件?
  • 为什么不考虑设置tabIndex?

标签: c# winforms


【解决方案1】:

您可以定义一个变量来存储标签按下次数,在类级别的 Form 类中定义它:

int count = 0;

然后在Form's KeyDown 事件中执行以下操作:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
        if (e.KeyCode == Keys.Tab)
        {
            switch (count)
            {
                case 0:
                    this.ActiveControl = uc1TextBox;
                    count++;
                    break;
                case 1:
                    this.ActiveControl = uc2TextBox;
                    count++
                    break;

               // and so on...
            }
        }
}

【讨论】:

  • uc1TextBox.Focus() 也可以使用!
  • uc1TextBox 在用户控制中,但我在 MainForm 中;我怎样才能得到这个属性?
  • @ZaheerMehmood 然后尝试使用前面评论中提到的 textBox 的 Focus 方法。或者您的用户控件可能有 ActiveControl 属性尝试设置它。
  • 我在 MianForm 中有用户控件的实例,但我无法像 uc1.textbox1.setFocus() 等那样做
  • @ZaheerMehmood 如果您提供一些代码会更好。我无法从您的问题中理解这一点
【解决方案2】:

首先设置选项卡顺序并确保您要选择的所有控件的 TabStop 属性设置为 true

  private void Form1_KeyDown(object sender, KeyEventArgs e)
  {
    if (e.KeyCode == Keys.Enter)
    {
            e.Handled = true;
            this.ProcessTabKey(true);
    }

  }

【讨论】:

  • uc1TextBox 在用户控制中,但我在 MainForm 中;我怎样才能得到这个属性?
  • 我在 MianForm 中有用户控件的实例,但我无法像 uc1.textbox1.setFocus() 等那样做
【解决方案3】:

试试吧, 简单地, 在设计模式下,从属性资源管理器中将 uc1 的 tabIndex 值设置为 0,将 uc2 设置为 1,将 uc3 设置为 2,将 uc4 设置为 3,并将它们的 tabstop 属性设置为 true。 希望这已经足够了。 谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 2014-01-22
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 1970-01-01
    相关资源
    最近更新 更多