Gå til innhold

Legge til fjerne tabvinduer i runtime


Anbefalte innlegg

Videoannonse
Annonse

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.

Lenke til kommentar

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?

Lenke til kommentar

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?

Lenke til kommentar
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.

Lenke til kommentar

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.

Lenke til kommentar

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

Lenke til kommentar

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?

Lenke til kommentar

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.

Lenke til kommentar

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?

Lenke til kommentar

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...