Gå til innhold

Legge til fjerne tabvinduer i runtime


Anbefalte innlegg

Skrevet

Jeg har en tabcontrol med 20 sider, jeg trenger hjelp med å kunne legge til å fjerne sider avhengig om jeg vil bruke dem eller ei runtime. noen som er snille og kan hjelpe meg med det?

Videoannonse
Annonse
Skrevet

Det ser dessverre ikke ut som om du har forstått mitt problem.

Jeg ønsker ikke legge til "nye" faner, jeg ønsker å gjemme de eksisterende så de ikke er synlig om jeg ikke skal benytte de funksjoner som ligger der.

Slik at jeg f.eks kan gå inn i en avmerkningsliste å legge til eller fjerne avmerkning ved de faner jeg har som jeg ønsker å benytte.

Skrevet (endret)

Ja? Du må jo legge de til og fjerne de fra tab controlen. Du trenger jo ikke drepe de forde.

 

Så jeg vil heller si: Det ser dessverre ikke ut som om du har forstått hvordan det funker.

Endret av Manfred
Skrevet

Nå har jeg laget en form med checkbokser legger da inn kode som ser noe slik ut:

 

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If Me.CheckBox1.Checked = True Then

Form1.TabPage2.Enabled = True

Else

Form1.TabPage2.Enabled = False

End If

 

End Sub

 

Jeg har importert Form1

 

Men hvordan får jeg evt oppdatert Form 1 så jeg ser om endringen fungerer?

Skrevet

har nå forsøækt en ny kode som sier:

 

Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged

If Me.CheckBox1.Checked = True Then

Form1.TabControl1.Controls.Add(Form1.TabPage2)

Else

Form1.TabControl1.Controls.Remove(Form1.TabPage2)

End If

 

End Sub

 

Men det ser ikke ut som om jeg får oppdatert programmet.

Jeg har og lagt til en knapp som har følgende kode:

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

Form1.TabControl1.Update()

Form1.Update()

 

End Sub

 

Men det ser ikke ut til å fungere..

 

Hva er det jeg gjør galt her?

Skrevet

Det er litt feil å bruke Visible. Du kan bare ha alle tabvinduene i en slags tab collection, og så adder du og remover de fra tabcontrolen når de skal vises eller skjules. Det er mer "riktige" måten å gjøre det på.

Skrevet
Det er litt feil å bruke Visible. Du kan bare ha alle tabvinduene i en slags tab collection, og så adder du og remover de fra tabcontrolen når de skal vises eller skjules. Det er mer "riktige" måten å gjøre det på.

Uhm, du har rett. Sjekket akkurat på en TAB kontroll og tabbene har ingen VISIBLE. Da er jeg enig med deg. Man må behandle dette som en collection.

 

Burde jo være enkelt å kopiere disse man lager i design time til en egen collection for så å manipulere TAB Controllens egne collection runtime.

Skrevet
Kan du være snill å gi meg et kort eksempel på hvordan det gjøres?

Aldri gjort det før, men sjekk ut List<t> og SortedList<t,T> for litt mere info på dette så tenker jeg du kommer i mål.

Skrevet

Du lager en Liste (List<T> som HDSoftware sier) som skal representere alle eksisterende tab-er

 

List<TabPage> m_pages;

 

Etter at InitializeComponents i constructoren til formen er kalt, må du først hente alle tab-kontrollene

 

m_pages = new List<TabPage>(MyTabControl.TabPages);

 

Deretter må du bare bygge opp tab-listen på nytt hver gang den skal endres, sånn at kun de du er interessert i vil legges i TabPages på Tab-kontrollen din.

Skrevet

Jeg fosøker nå med 2 forskjellige kommandoer:

Jeg har satt opp en checkbox som skal signalisere om tab skal skrus av eller ei.

If Me.CheckBox1.Checked Then

 

Form1.TabControl1.TabPages.Remove(Form1.TabPage2)

 

Form1.TabControl1.Controls.Remove(Form1.TabPage2)

 

Men ingen av dem ser ut til å fungere.

Feg forsøker og med If Me.CheckBox1.Checked Then

 

 

Form1.TabControl1.Update()

Form1.TabControl1.Refresh()

 

Men uten hell jeg la også til Form1..Refresh() uten at dette hjalp.

Hvordan får jeg endringene til å skje?

 

Dette ligger da i en metode som jeg henter med en knapp

Skrevet

Når jeg legger kommandoen:

 

Me.TabControl1.TabPages.Remove(Me.TabPage2)

 

I funksjonen til en knapp fungerer det glimrende

Men når jeg legger den i en knappefunksjon i en annen form slik:

 

Form1.TabControl1.TabPages.Remove(Form1.TabPage2)

Så fungerer den ikke.

 

Noen som vet hvorfor?

Skrevet

Ja, men vet du hva referanser og slikt er for noe?

VB lar deg ignorere noe av dette for å gjøre det enklere å programmere, men i ettertid kan dette sees på som en bjørnetjeneste.

 

Du må vite at dersom du initialiserer et objekt så er ikke det objektet lik Form1 osv.

VB er veldig uklar på dette for nybegynnere, en av grunnene til at VB er et møkkaspråk.

Skrevet
Jeg er dessverre ikke så meget inneforstått med det nei, Kan du hjelpe meg litt på vei?

Det han sier er at du må lære deg OOP for å få en forståelse av dette. Det betyr at du må skjønne begreper som klasser, referanser og instanser.

Skrevet

Jeg har laget et par metoder:

 

Public Sub Tab2()

TabControl1.TabPages.Insert(1, TabPage2)

TabControl1.Refresh()

End Sub

 

Public Sub Tab21()

Me.TabControl1.TabPages.Remove(TabPage2)

 

End Sub

 

For å legge til å fjerne et av vinduene.

 

De er laget globale.

Deretter forsøker jeg å kjøre de fra et annet vindu med spørringen:

 

rivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Form1.Tab2()

 

End Sub

 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Form1.Tab21()

 

End Sub

 

Men det fungerer heller ikke.

 

Jeg vet jeg er inne på noe men det er tydeligvis et eller annet jeg mangler.

 

Kan dere være snille å se på det en gang til for meg?

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...