WinForms 选项卡控件
WinForms TabControl
我注意到,通过以编程方式在 Tab 控件中选择一个 Tab 可以选择包含在选项卡页中的一个控件 selected.Is 可以更改此行为。我在标签页中有一个控件,当通过单击按钮选择其标签页时,我不想被选中。我有一个带有选项卡控件和两个选项卡页的简单表单。单击 button1 时,将选择标签页 2,但该标签页中包含的 datagridview 也会被选中。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.GotFocus += DataGridView1_GotFocus;
}
private void DataGridView1_GotFocus(object sender, EventArgs e)
{
//this event is called from button1_click
}
private void button1_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage2;
}
}
默认情况下,当您 select 一个选项卡时(甚至当您启动一个表单时),您的选项卡顺序中位于第一个的控件会自动获得焦点。我假设这就是这里发生的事情。
您可以通过简单地取消关注有问题的 datagridView 来解决这个问题。有多种方法可以做到这一点。首先,您可以将焦点设置到您希望 selected 而不是 dataGridView 的控件。这可以通过以下方式完成:
myControl.Focus = True;
或者,如果您不想 select 编辑任何控件,您可以将活动控件设置为 Null:
ActiveControl = NULL;
注意:ActiveControl
是一个 属性,其中包含当前活动的控件。
至于这段代码应该放在哪里。这完全取决于你。您可以在按钮单击事件中更改选项卡后立即执行此操作。这是我更喜欢的。
我相信还有其他的问题可以实现同样的目标。希望这有帮助。
这是 select 选项卡的代码
private void button1_Click(object sender, EventArgs e)
{
// we can select tab by tab name
tabControl1.SelectTab("tabPage2");
tabControl1.SelectedIndex = 1;
tabControl1.TabPages[0].Hide();
tabControl1.TabPages[1].Show();
}
我注意到,通过以编程方式在 Tab 控件中选择一个 Tab 可以选择包含在选项卡页中的一个控件 selected.Is 可以更改此行为。我在标签页中有一个控件,当通过单击按钮选择其标签页时,我不想被选中。我有一个带有选项卡控件和两个选项卡页的简单表单。单击 button1 时,将选择标签页 2,但该标签页中包含的 datagridview 也会被选中。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.GotFocus += DataGridView1_GotFocus;
}
private void DataGridView1_GotFocus(object sender, EventArgs e)
{
//this event is called from button1_click
}
private void button1_Click(object sender, EventArgs e)
{
tabControl1.SelectedTab = tabPage2;
}
}
默认情况下,当您 select 一个选项卡时(甚至当您启动一个表单时),您的选项卡顺序中位于第一个的控件会自动获得焦点。我假设这就是这里发生的事情。
您可以通过简单地取消关注有问题的 datagridView 来解决这个问题。有多种方法可以做到这一点。首先,您可以将焦点设置到您希望 selected 而不是 dataGridView 的控件。这可以通过以下方式完成:
myControl.Focus = True;
或者,如果您不想 select 编辑任何控件,您可以将活动控件设置为 Null:
ActiveControl = NULL;
注意:ActiveControl
是一个 属性,其中包含当前活动的控件。
至于这段代码应该放在哪里。这完全取决于你。您可以在按钮单击事件中更改选项卡后立即执行此操作。这是我更喜欢的。
我相信还有其他的问题可以实现同样的目标。希望这有帮助。
这是 select 选项卡的代码
private void button1_Click(object sender, EventArgs e)
{
// we can select tab by tab name
tabControl1.SelectTab("tabPage2");
tabControl1.SelectedIndex = 1;
tabControl1.TabPages[0].Hide();
tabControl1.TabPages[1].Show();
}