Bład po dodaniu TabPage w Visual Basic 2005


(Tolszowka) #1

Mam problem.

Po dodaniu TabPage nr 7 do TabControl wyskakuje mi błąd:

Czy ktoś z was spotkał się z czymś takim? Pomocy!


(Tomek Matz) #2

Pokaż co masz w konstruktorze tego formularza (kod). Puść też kod przez debugger i zobacz co siedzi w InnerException (to jest właściwość klasy Exception).


(Tolszowka) #3

Dzięki za odpowiedź.

Tylko jak wyświetlić konstruktor?


(Tomek Matz) #4

Konstruktor to jest procedura o nazwie New. Jeśli nie masz jej w kodzie Form-y, to ja błędnie założyłem, że edytowałeś kod konstruktora Form-y i wprowadziłeś w nim jakieś wywołanie, które powoduje, że powstaje nieskończona rekurencja. Pokaż mi w takim bądź razie fragment kodu, w którym występuje błąd i powiedz co wyczytałeś z tego całego InnerException?


(Tolszowka) #5

Nie edytowałem kodu konstruktora. To trochę dziwne, bo jedyne co zrobiłem, to dodałem TabPage nr 7 do TabControl. Jeżeli powrócę do poprzedniej wersji - działa. Dodaję kontrolkę TabPage - wyskakuje błąd przy debugowaniu. Problem w tym, że nie pokazuje mi w którym fragmencie kodu występuje błąd. Tylko okienko: InvalidOperationExeption was unhandled. Pokazuje mi:


(Tomek Matz) #6

Ciekawe :stuck_out_tongue: Czy możesz mi wysłać cały projekt? Zerknę na to u siebie.


(Tolszowka) #7

Dziękuję za dobre chęci i pomoc, ale niestety nie mogę ci przesłać projektu. Jest prawie na ukończeniu.


(Tomek Matz) #8

Aha, rozumiem :). No to za dużo nie jestem w stanie pomóc. Jedyne co Ci mogę powiedzieć to dodaj taki fragment kodu do Form-y, żeby wyłapać ten InnerException (zakładam, że wyjątek pojawia się w trakcie uruchamiania aplikacji).

Public Sub New()

        Try

            InitializeComponent()

        Catch ex As ApplicationException

            If Not ex.InnerException Is Nothing Then MessageBox.Show(ex.InnerException.Message)

        End Try

    End Sub

(Tolszowka) #9

Gdzie go wywołać?

W Form.Load?


(Tomek Matz) #10

Wklejasz to po prostu do kodu Form-y (w dowolne miejsce):

Public Class Form1


    Public Sub New()

        Try

            InitializeComponent()

        Catch ex As ApplicationException

            If Not ex.InnerException Is Nothing Then MessageBox.Show(ex.InnerException.Message)

        End Try

    End Sub


End Class

Zrób jeszcze jedną rzecz ... Utwórz nowy projekt, dodaj na Form-ę kontrolkę TabControl i dodaj kilka zakładek (>7) w celu sprawdzenia, czy też wystąpi ten sam wyjątek.


(Tolszowka) #11

Program nie dochodzi do: "If Not ex.InnerException Is Nothing Then MessageBox.Show(ex.InnerException.Message)"

Wcześniej wyskakuje ten sam błąd.

Nowy projekt z tabpages >= 7 działa bez zarzutu.


(Tomek Matz) #12

Podmień ApplicationException na Exception lub SystemException i daj znać, czy teraz się załapie. InvalidOperationException nie dziedziczy po ApplicationException /facepalm. Ten wyjątek pojawia się przy próbie uruchomienia aplikacji, tak?


(Tolszowka) #13

Dożo wiesz!


(Tomek Matz) #14

Złapałeś ten wyjątek, czy nie?


(Tolszowka) #15

Tak. Przy debugowaniu.

Złapał się, ale wyskakuje okienko, a w nim nic.


(Tomek Matz) #16

Najwyraźniej komunikat błędu w tym InnerException jest pusty. Mówi się trudno. Ustaw sobie breakpoint na linijce InitializeComponent() i przejdź krok po kroku przez cały plik .Designer.vb. W końcu natrafisz na tą linijkę, która wyrzuca wyjątek (musisz się uzbroić w cierpliwość :slight_smile: ). Wydaje mi się to mało prawdopodobne, ale najwyraźniej kreator Visual Studio namieszał Ci w kodzie.


(Tolszowka) #17

Złapał się


(Tomek Matz) #18

Co to znaczy złapał się? Czy możesz być bardziej szczegółowy w opisach? Teraz już musisz sobie poradzić sam. Zakładam, że debugger-a umiesz używać. Znajdź linijkę, na której wyrzucany jest wyjątek i ją popraw. Dodam tylko, że żeby zobaczyć plik .Designer.vb musisz zaznaczyć nazwę projektu, a później kliknąć Show All Files

28khw15.png


(Tolszowka) #19

Jest !

Już działa !

Powodem chyba było odwołanie z funkcji zewnętrznej typu MainForm.Kontrolka, bo te z Me.Kontrolka przechodziły.

Będę mądrzejszy na przyszłość.

Interesuje mnie tylko fakt, co ma do tego TabControl?

Wielkie dzięki za pomoc !!

Jestem Ci winny duże piwo.

Pozdrawiam.

Tadek


(Tomek Matz) #20

Szczerze mówiąc, nie mam pojęcia czemu problem pojawił się dopiero po dodaniu nowego tab-a do tabcontrol. Możesz pokazać całą linijkę, na której występował błąd? Również pozdrawiam :slight_smile: