2012-03-23 23 views
3

Zunächst einmal ich dies tat finden, die nützlich war, aber nicht genau das, was ich Windows Forms event "On Select Tab"?ausblenden oder anzeigen Textbox basierend auf verschiedenen Karteikarten-Auswahl

erforderlich, dass nur das Auswahlereignis für die gesamte Registersteuer und nicht jeder geändert deckt einzelne Registerkarte.

Was ich tun muss, ist das Ausblenden oder Anzeigen bestimmter Textfelder basierend auf der Registerkarte, die ich ausgewählt habe. Beispiel ist unten, außer das click-Ereignis funktioniert nicht. ExpenseReport und ExpenseReview sind meine zwei Tabs. Jede Hilfe wäre willkommen!

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

Antwort

1

Man könnte so gehen:

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

Das ist nicht schlecht. +1. – David

5

der SelectedIndexChanged Veranstaltung TabControl verwenden.

Angenommen, es gibt nur zwei Registerkarten. (Wenn es mehr ist, würde ich eine switch-Anweisung statt if..else verwenden)

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

Einfach. Einfache Antwort. Danke –

0

Es könnte besser sein, das Selected Ereignis zu verwenden. Er übergibt den aktuellen Tab, in dem TabControlEventArgs Parameter ausgewählt wird:

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