web-dev-qa-db-de.com

TabPage deaktivieren und ausblenden

Wie kann ich ein TabPage in einem TabControl sichtbar machen/ausblenden und aktivieren/deaktivieren

16
Aan

Möglicherweise verpassen Sie das Offensichtliche, da keines der folgenden Elemente das Aussehen der Registerkarte entfernt oder ändert

        tabPage1.Enabled = false; // this disables the controls on it
        tabPage1.Visible = false; // this hides the controls on it.

Entfernen Sie auch nicht die Registerkarte aus der Liste oben.

5
BugFinder
  • Aktivieren deaktivieren

    Der tabPage.Enabled scheint gut zu funktionieren, wird aber als "nicht verwendet" markiert:

    Diese API unterstützt die .NET Framework-Infrastruktur und ist nicht für die direkte Verwendung in Code bestimmt.
    Dieser Member ist für dieses Steuerelement nicht sinnvoll.

    Sie sollten also die Registerkarte deaktivieren, indem Sie alle Steuerelemente auf der Registerkarte deaktivieren. Siehe dies zum Beispiel.

  • Anzeigen Ausblenden

    Es gibt eine vorhandene tabPage.Visible -Eigenschaft, aber es scheint keine Wirkung zu haben. Außerdem wird es als "nicht verwendet" markiert, und msdn empfiehlt, die Registerkarte aus dem Registersteuerelement zu entfernen, um sie auszublenden:

    // Hide the tab page
    tabControl.TabPages.Remove(tabPage1);
    // Show the tab page (insert it to the correct position)
    tabControl.TabPages.Insert(0, tabPage1);
    
26
Otiel

Ich hatte auch diese Frage. tabPage.Visible ist nicht wie zuvor beschrieben implementiert, was eine große Hilfe war (+1). Ich habe festgestellt, dass Sie die Steuerung überschreiben können, und dies wird funktionieren. Ein bisschen Nekroposting, aber ich dachte, ich würde meine Lösung hier für andere posten ...

    [System.ComponentModel.DesignerCategory("Code")]
public class MyTabPage : TabPage
{
    private TabControl _parent;
    private bool _isVisible;
    private int _index = int.MinValue;
    public new bool Visible
    {
        get { return _isVisible; }
        set
        {
            if (_parent == null) _parent = this.Parent as TabControl;
            if (_parent == null) return;

            if (_index < 0) _index = _parent.TabPages.IndexOf(this);
            if (value && !_parent.TabPages.Contains(this))
            {
                if (_index > 0 && _index < _parent.TabPages.Count) _parent.TabPages.Insert(_index, this);
                else _parent.TabPages.Add(this);
            }
            else if (!value && _parent.TabPages.Contains(this)) _parent.TabPages.Remove(this);

            _isVisible = value;
            base.Visible = value;
        }
    }

    protected override void InitLayout()
    {
        base.InitLayout();
        _parent = Parent as TabControl;
    }
}
6
John S.
//Move&Add is not good answer   
this.tabPage1.Parent = null; // hide    
this.tabPage1.Parent = this.tabControl1; //show
4
user3304385

Ich weiß nicht über Aktivieren/Deaktivieren (versuchen Sie möglicherweise, alle Steuerelemente zu deaktivieren). Wenn Sie sie ausblenden möchten, entfernen Sie sie einfach aus der Items-Sammlung. Wenn Sie sie wieder sichtbar machen möchten, können Sie sie wieder dem Steuerelement hinzufügen. Trotzdem müssen Sie sich um ihre Reihenfolge kümmern (speichern Sie ihre Referenzen in einer Liste oder Sie haben zwei Listen, die Verweise auf diese TabPages enthalten, die sichtbar sind und nicht.).

2

wir können Registerkarten mit TABPAGE.ENABLE=true und TABPAGE.ENABLE=FALSE aktivieren oder deaktivieren.

die sichtbare Eigenschaft kann jedoch nicht auf tabpages.we angewendet werden.

 private void HideTabPage(TabPage tp)
 {
 if (tabControl1.TabPages.Contains(tp))
 tabControl1.TabPages.Remove(tp);
 }

private void ShowTabPage(TabPage tp)
{
 ShowTabPage(tp, tabControl1.TabPages.Count);
 }

private void ShowTabPage(TabPage tp , int index)
{
 if (tabControl1.TabPages.Contains(tp)) return;
 InsertTabPage(tp, index);
}

 private void InsertTabPage(TabPage tabpage, int index)
{
   if (index < 0 || index > tabControl1.TabCount)
  throw new ArgumentException("Index out of Range.");
   tabControl1.TabPages.Add(tabpage);
   if (index < tabControl1.TabCount - 1)
   do 
    {
    SwapTabPages(tabpage, (tabControl1.TabPages[tabControl1.TabPages.IndexOf(tabpage) - 1]));
     }
    while (tabControl1.TabPages.IndexOf(tabpage) != index);
    tabControl1.SelectedTab = tabpage;
  }
   private void SwapTabPages(TabPage tp1, TabPage tp2)
     {
    if (tabControl1.TabPages.Contains(tp1) == false ||tabControl1.TabPages.Contains(tp2) == false)
        throw new ArgumentException("TabPages must be in the TabControls TabPageCollection.");

     int Index1 = tabControl1.TabPages.IndexOf(tp1);
     int Index2 = tabControl1.TabPages.IndexOf(tp2);
     tabControl1.TabPages[Index1] = tp2;
     tabControl1.TabPages[Index2] = tp1;
    tabControl1.SelectedIndex = tabControl1.SelectedIndex; 
    string tp1Text, tp2Text;
    tp1Text = tp1.Text;
    tp2Text = tp2.Text;
    tp1.Text=tp2Text;
    tp2.Text=tp1Text;
     }
2
sindhu jampani
// Hide TabPage and Remove the Header
this.tabPage1.Hide();
this.tabPage3.Hide();
this.tabPage5.Hide();
tabControl1.TabPages.Remove(tabPage1);
tabControl1.TabPages.Remove(tabPage3);
tabControl1.TabPages.Remove(tabPage5);

// Show TabPage and Visible the Header
tabControl1.TabPages.Insert(0,tabPage1);
tabControl1.TabPages.Insert(2, tabPage3);
tabControl1.TabPages.Insert(4, tabPage5);
this.tabPage1.Show();
this.tabPage3.Show();
this.tabPage5.Show();
tabControl1.SelectedTab = tabPage1;
0
ISB

Setzen Sie tabpage in panel und verstecken Sie panel mit

this.panel1.visible=false;

Es funktioniert für mich!

0
THE INN-VISIBLE

Basierend auf @ Otiels Antwort habe ich diese beiden Funktionen ausgeführt:

Um die Sichtbarkeit umzuschalten:

bool toggleTabPageVisibility(TabControl tc, TabPage tp)
{
    //if tp is already visible
    if (tc.TabPages.IndexOf(tp) > -1)
    {
        tc.TabPages.Remove(tp);
        //no pages to show, hide tabcontrol
        if(tc.TabCount == 0)
        {
            tc.Visible = false;
        }
        return false;
    }
    //if tp is not visible
    else
    {
        tc.TabPages.Insert(tc.TabCount, tp);
        //guarantee tabcontrol visibility
        tc.Visible = true;
        tc.SelectTab(tp);
        return true;
    }
}

Sichtbarkeit einstellen:

void setTabPageVisibility(TabControl tc, TabPage tp, bool visibility)
{
    //if tp is not visible and visibility is set to true
    if ((visibility == true) && (tc.TabPages.IndexOf(tp) <= -1))
    {
        tc.TabPages.Insert(tc.TabCount, tp);
        //guarantee tabcontrol visibility
        tc.Visible = true;
        tc.SelectTab(tp);
    }
    //if tp is visible and visibility is set to false
    else if ((visibility == false) && (tc.TabPages.IndexOf(tp) > -1))
    {
        tc.TabPages.Remove(tp);
        //no pages to show, hide tabcontrol
        if(tc.TabCount == 0)
        {
            tc.Visible = false;
        }
    }
    //else do nothing
}
0
kokbira

Was ist mit den tabPage.Enabled- und tabPage.Visible-Eigenschaften?

FYI: http://msdn.Microsoft.com/de-de/library/8fb09fh2.aspx

0
Gianni B.