Laden...

TabControl als Basis für Assistenten und sowas

Letzter Beitrag vor 15 Jahren 1 Posts 7.454 Views
TabControl als Basis für Assistenten und sowas

Hi all!

Das ist wohl ein gelegentliches Problem, eine Anwendung so Framesetmäßig zu designen, also links die Navi-Bar, und rechts wird entsprechend wechselnd ein Arbeitsbereich angezeigt.
Da gibts schon eine FAQ von Herbivore zu - [FAQ] Mit Forms eine Art Frameset einer Website nachbauen? , aber ich wollte mal meine einfache Lösung vorstellen, evtl. wandert die ja auch mal in die Snippets [EDIT=herbivore](verschieben erledigt)[/EDIT], oder als Anhang zu Herbivores FAQ-Beitrag

Das hier ist eigentlich der ganze Code:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;

namespace FrameSetLike {
   public partial class frmFrameSetLike : Form {

      public frmFrameSetLike() {
         InitializeComponent();

         //diese Einstellungen verstecken die Reiter erst zur Laufzeit
         //zur Design-Zeit sind die Reiter ja sehr nützlich 
         tabControl1.SizeMode = TabSizeMode.Fixed;
         tabControl1.ItemSize = new Size(0, 1);
         tabControl1.Appearance = TabAppearance.Buttons;

         this.listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
         foreach (TabPage tp in this.tabControl1.TabPages) { listBox1.Items.Add(tp); }
         this.listBox1.DisplayMember = "Text";
         listBox1.SelectedIndex = 0;
      }

      void listBox1_SelectedIndexChanged(object sender, EventArgs e) {
         this.tabControl1.SelectedIndex = listBox1.SelectedIndex;
         //TabControl ist bisserl doof - es nimmt den Focus, auch wenn nur per Code selektiert wurde
         listBox1.Focus();             //Focus zurück zur Listbox
      }
   }
}


Das ist jetzt die einfachste Ausführung.
Als Navi-Bar dient hier eine Listbox, da kann man natürlich auch was anderes nehmen - hauptsache, der User kann irgendwie den Index der gewünschten TabPage bestimmen.
Denkbar ist auch, TabControl abzuleiten, und da was dranzumachen, daß Reiter Enabled/Disabled sein können - das stellich mir als ein nettes Feature für Assis vor, wenn man sieht, was man schon geschafft hat, und was man noch muß.
Oder man macht die Reiter an/aus zu knipsen.

Ja, probierts dochma aus.

Der frühe Apfel fängt den Wurm.