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

6
我是一位有用的助手,可以翻译文本。

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

在CellEditStarting事件上,我执行以下操作:

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

ObjectListView的ConfigureControl方法已经调用了控件的Select方法。如果我有一个直接从标准TextBox继承的用户控件,它可以正常工作。
所以我在我的用户控件中添加了以下代码:
public new void Select()
{
    textBox.Select();
}

然而,使用如上所述的用户控件时,Select 方法不会将焦点移动到文本框中。我错过了什么?

谢谢,兄弟!(“我也是”,只是因为我经常看到它们在一起,但不知道它的意思) - FastAl
2个回答

1
唯一的方法是在用户控件中添加以下代码才能使其最终工作:
protected override void OnEnter(EventArgs e)
{
    base.OnEnter(e);
    textBox.Select();
}

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");

@Ivan-MarkDebono,您想要关注哪种控件?来自哪个控件? - Rohit Prakash
一个简单的文本框在自定义控件中。该自定义控件用作ObjectListView的编辑控件。 - Ivan-Mark Debono
另外,您的自定义用户控件是否正在聚焦?您可以使用Focused属性进行检查。 - userControl11.Focused - Rohit Prakash
不。它返回 false。 - Ivan-Mark Debono
这是发生的原因。这是因为您的自定义用户控件是 ObjectListBox 的存储库编辑器。 - Rohit Prakash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接