Visual Basic 2010 - Problem z TabControl


(jakub888) #1

Witam!

Mam problem z zaprogramowaniem prostego edytora tekstu.

Otóż mój problem polega na tym że nie wiem jak zrobić aby po dodaniu karty w TabControl (Dzięki Kliknięciu na Przycisk) ta nowa karta zawierała ten same elementy jakie są w poprzedniej karcie.

A jak by dało rade zrobić aby wszystkie dodawane karty zawierały ten sam zdefiniowany element był bym bardzo wdzięczny za poweidzenie mi jak to zrobić ?:slight_smile:

Za odpowiedź z gór dziękuję


(nnick) #2

Możesz stworzyć kontrolkę dziedziczącą po TabPage (zakładam że używasz WinForms) i zawierającą wszystkie elementy które Ci są potrzebne, ot co.


(jakub888) #3

Dobra uporałem się z tym :smiley:

Zrobiłem to tak :

Dim t As New TabPage

        Dim newtab As New RichTextBox

        newtab.Show()

        newtab.Dock = DockStyle.Fill

        newtab.Text = ""

        t.Controls.Add(newtab)

        TabControl1.TabPages.Add(t)

Teraz nie wiem jak zrobić aby zapisać treść z aktywnej karty na dysku twardym przez tą moją aplikacje może jakieś propozycje ?


(Fiołek) #4

TabControl.SelectedTab, TabPage.Controls[0], RichTextBox.Text, File.WriteAllText - złożyć do kupy(trudne nie będzie...) i podpiąć pod jakieś zdarzenie(np. Button.Click).

Btw. MSDN+Google/Bing nie gryzie...


(jakub888) #5

Mój kod wygląda tak :

Public Class Form1

    Dim i As Integer = 1

    Private Sub ZapiszToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ZapiszToolStripMenuItem.Click

        Dim Save As New SaveFileDialog

        Save.Filter = "Text Files (*.txt)|*.txt|ALL FILES (*.*)|*.*"

        Save.Title = "Zapisz Plik"

        Save.CheckPathExists = True

        Save.ShowDialog(Me)

        Dim newstab As RichTextBox

        Try

            My.Computer.FileSystem.WriteAllText(Save.FileName, RichTextBox.Text, False)

        Catch ex As Exception

        End Try

    End Sub

    Private Sub OtwórzToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles OtwórzToolStripMenuItem.Click

        Dim Open As New OpenFileDialog

        Open.Filter = "Text Files (*.txt)|*.txt|ALL FILES (*.*)|*.*"

        Open.Title = "Otwieranie Pliku"

        Open.CheckPathExists = True

        Open.ShowDialog(Me)

        On Error Resume Next

        Dim RT As New System.IO.StreamReader(Open.FileName)

        On Error Resume Next

        Dim t As New TabPage

        Dim newtab As New RichTextBox

        newtab.Show()

        newtab.Dock = DockStyle.Fill

        newtab.Text = ""

        t.Controls.Add(newtab)

        TabControl1.TabPages.Add(t)

        newtab.Text = RT.ReadToEnd

        t.Text = Open.FileName

    End Sub


    Private Sub ZamknijToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ZamknijToolStripMenuItem.Click


    End Sub


    Private Sub Form1_Activated(sender As Object, e As System.EventArgs) Handles Me.Activated

        Dim t As New TabPage

        Dim newtab As New RichTextBox

        newtab.Show()

        newtab.Dock = DockStyle.Fill

        newtab.Text = ""

        t.Controls.Add(newtab)

        TabControl1.TabPages.Add(t)

    End Sub


    Private Sub NowaKartaToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles NowaKartaToolStripMenuItem.Click

        Dim t As New TabPage

        Dim newtab As New RichTextBox

        newtab.Show()

        newtab.Dock = DockStyle.Fill

        newtab.Text = ""

        t.Controls.Add(newtab)

        TabControl1.TabPages.Add(t)

    End Sub

End Class

Błąd jest w

Try

            My.Computer.FileSystem.WriteAllText(Save.FileName, [u][b]RichTextBox.Text[/b][/u], False)

        Catch ex As Exception

        End Try

I teraz jak zrobić aby pobrało tekst z jednego RichTextBox będącego na aktualnie otwartej karcie


(Fiołek) #6

Text nie jest zmienną statyczną/stałą klasy RichTextBox. Musisz odwołać się do konkretnego obiektu(wybranej karty), co podałem jak zrobić(coś jak: CType(TabControl1. SelectedTab. Controls [0], RichTextBox).Text).


(jakub888) #7

Jakoś nie działa


(Fiołek) #8

Jeśli zrobiłeś copy-paste mojego kodu, to niestety nie będzie działać(nie znam VB i teraz widzę, że tam jest błąd, ale dlatego napisałem "coś jak", by nie brać go dosłownie). Przejrzyj dokładnie dokumentacje(linki które podesłałem to podstawa, ale więcej by się przydało w sumie, bo wydaje mi się, że Ci podstaw brakuje), a następnie napisz na ich podstawie kod.

Albo masz gotowca: My.Computer.FileSystem.WriteAllText(Save.FileName, CType(Me.TabControl1.SelectedTab.Controls(0), RichTextBox).Text, False)


(jakub888) #9

Dzięki