Hide or show textbox based on different tab page selection
首先,我确实发现这很有用,但并不完全是我需要的
Windows 窗体事件"在选择选项卡上"?
这仅涵盖整个选项卡控件的选择更改事件,而不是每个单独的选项卡页。
我需要做的是根据我选择的标签页隐藏或显示某些文本框。示例如下,但单击事件不起作用。 ExpenseReport 和 ExpenseReview 是我的两个选项卡。任何帮助将不胜感激!
1 2 3 4 5 6 7 8 9 10 11 | private void tpExpenseReport_Click(object sender, EventArgs e) { txtTripNo.Visible = true; txtTripNo2.Visible = false; } private void tpExpenseReview_Click(object sender, EventArgs e) { txtTripNo.Visible = false; txtTripNo2.Visible = true; } |
使用 TabControl 的 SelectedIndexChanged 事件。
假设只有两个标签。 (如果有更多,我会使用 switch 语句而不是 if..else)
1 2 3 4 5 6 7 8 9 10 11 12 13 | tabControl1.SelectedIndex_Changed(object sender, EventArgs e) { if(tabControl1.SelectedIndex == 0) { txtTripNo.Visible = true; txtTripNo2.Visible = false; } else { txtTripNo.Visible = false; txtTripNo2.Visible = true; } } |
你可能会这样:
1 2 3 4 5 6 7 8 9 10 11 12 | private void tabControl_SelectedIndexChanged(...) { int index = tabControl.SelectedIndex; if (index == 0) HideTextBoxes(false); else HideTextBoxes(true); } private void HideTextBoxes(bool someSelector) { txtTripNo.Visible = someSelector; txtTripNo2.Visible = !someSelector; } |
最好使用
1 2 3 4 5 6 7 8 9 | private void tabControl1_Selected(object sender, TabControlEventArgs e) { if (e.TabPage == tpExpenseReport) { txtTripNo.Visible = true; txtTripNo2.Visible = false; } else if (e.TabPage == tpExpenseReview) { txtTripNo.Visible = false; txtTripNo2.Visible = true; } } |