从选项卡控件内的winform获取控件

本文关键字:控件 winform 获取 选项 | 更新日期: 2023-09-27 18:28:07

我有一个选项卡控件,在第一个选项卡中有一个文本框。我想要的是,当选择第一个选项卡时,文本框将自动聚焦。

我可以访问选项卡选择的索引更改事件,但不能访问要自动聚焦的文本框。有什么想法吗?

在添加到选项卡时,我正在这样做:

            capture = new CaptureForm(photoGrapherName);
            capture.TopLevel = false;
            capture.Visible = true;
            capture.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            capture.Dock = DockStyle.Fill;
            tabControl1.TabPages[0].Controls.Add(capture); capture = new CaptureForm(photoGrapherName);
            capture.TopLevel = false;
            capture.Visible = true;
            capture.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            capture.Dock = DockStyle.Fill;
            tabControl1.TabPages[0].Controls.Add(capture);

这是我的标签更改事件:

    private void TabControl1_SelectedIndexChanged(Object sender, EventArgs e)
    {
        switch(tabControl1.SelectedIndex)
        {
            case 0:
                //I want to access the textbox from here.
                break;
            case 1:
                break;
        }
    }

CaptureForm有一个名为"ClientCode"的文本框,当任何人选择"捕获"选项卡时,我想让这个文本框成为焦点。

从选项卡控件内的winform获取控件

您是否尝试使用SelectedIndexChanged事件?如果您谈论TabControl,我们可以在开关案例的帮助下使用selectedIndexChanged事件来完成此操作。。

    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        switch ((sender as TabControl).SelectedIndex)
        {
            case 0:
                //nothing to do.. or you can, if you want.. :)
                break;
            case 1:                    
                tbFName.Focus();
                break;
        }
    }

更新

当你修改时,我知道你正在动态地向TabPage添加控件,所以使用下面的片段来获得动态添加的TextBox

    public Form1()
    {
        InitializeComponent();
        TextBox tb = new TextBox();
        tb.Name = "dynamic";
        tb.Text = "Text dynamic";
        tabControl1.TabPages[1].Controls.Add(tb);
    }
    private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
    {
        TabControl tc = (sender as TabControl);
        switch (tc.SelectedIndex)
        {
            case 0:
                break;
            case 1:
                Control[] temp = tc.TabPages[1].Controls.Find("dynamic", true);
                if (temp.Length == 1)
                {
                    (temp[0] as TextBox).Focus();
                }
                break;
        }
    }

希望它对你有意义!