如何将焦点设置在自定义控件中的控件上?

时间:2015-02-05 07:15:59

标签: c# winforms visual-studio-2012 objectlistview

我有一个包含文本框和按钮的自定义控件。我使用自定义控件作为ObjectListView中特定列的编辑控件。

在CellEditStarting事件中我做:

private void datalistViewProducts_CellEditStarting(object sender, CellEditEventArgs e)
{
    var ctl = (MyCustomControl)e.Control;
    e.Control = ctl;
}

ObjectListView的ConfigureControl方法已经调用了控件的Select方法。如果我有一个直接从标准TextBox继承的usercontrol,它可以正常工作。

所以我将以下代码添加到我的usercontrol中:

public new void Select()
{
    textBox.Select();
}

但是,如上所述进行用户控制,Select方法不会将焦点移动到文本框。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

您可以在CustomUserControl中创建方法,例如FocusControl(string controlName) 然后调用此方法将控件集中在自定义控件中。

  

在自定义用户控件中创建方法 -

public void FocusControl(string controlName)
    {
        var controls = this.Controls.Find(controlName, true);
        if (controls != null && controls.Count() == 1)
        {
            controls.First().Focus();
        }
    }
  

调用此方法 -

//textBox1 is the name of your focussing control in Custom User Control
userControl11.FocusControl("textBox1");

答案 1 :(得分:1)

使它最终工作的唯一方法是在usercontrol中添加以下代码:

protected override void OnEnter(EventArgs e)
{
    base.OnEnter(e);
    textBox.Select();
}