Hide or show a text box based on another bookmark selection

First of all, I found this helpful, but not exactly what I need Windows Forms "On Select Tab" Event?

This only covers the changed selection event for the entire tab control, not each individual tab.

What I need to do is hide or show certain text boxes based on the page I selected. The example below, apart from the click event, does not work. ExpenseReport and ExpenseReview are my two tabs. Any help would be appreciated!

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;
}

      

+3


source to share


3 answers


Use the TabControl SelectedIndexChanged event .

Assuming there are only two tabs. (If there are more, I would use a switch statement instead of if..else)



tabControl1.SelectedIndex_Changed(object sender, EventArgs e)
{
   if(tabControl1.SelectedIndex == 0)
   {
      txtTripNo.Visible = true; 
      txtTripNo2.Visible = false; 
   }
   else
   {
      txtTripNo.Visible = false; 
      txtTripNo2.Visible = true;
   }
}

      

+5


source


You can do the following:



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


source


Better to use event Selected

. It passes the actual tab, which is selected in the parameter TabControlEventArgs

:

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;
  }
}

      

0


source







All Articles