Laden...

TabControl als Basis für Assistenten und sowas

Erstellt von ErfinderDesRades vor 15 Jahren Letzter Beitrag vor 15 Jahren 7.434 Views
ErfinderDesRades Themenstarter:in
5.299 Beiträge seit 2008
vor 15 Jahren
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.