VBnet: ссылка на объект формы из класса - PullRequest
0 голосов
/ 06 сентября 2018

план

Я уверен, что на этот вопрос, наверное, где-то был дан ответ, потому что он довольно простой, но, к сожалению, я не нашел ответа ...

Мой план состоит в том, чтобы создать простую функцию журнала, которая использует RichTextField в качестве вывода и реализует такие функции, как Add, AddLine, RemoveLine, ReplaceLine, ...

что не работает

всякий раз, когда я пытаюсь получить доступ к объекту RichTextBox из класса журнала, я получаю исключение "ничто".

мой подход

Идея состояла в том, чтобы сохранить ссылку на RichTextBox в самом классе, который передается при создании нового экземпляра класса:

Public Class Log
    Dim _logBox As RichTextBox

    Public Sub New(ByRef logBox As RichTextBox)
        _logBox = logBox
    End Sub

    Public Sub AddLine(ByVal text As String)
        Me.Add(text)
        _logBox.AppendText(Environment.NewLine)
    End Sub
End Class

А в моем классе Form RichTextBox создается при запуске и передается в журнал. Класс:

Public Class Form1
    Dim log As New Log(RtbxLog) ' RtbxLog: RichTextBox object created on form

    [on some button click event]
      log.AddLine("entry with new line")  ' THIS CAUSES "nothing" EXCEPTION
End Class

1 Ответ

0 голосов
/ 06 сентября 2018

RtbxLog не инициализируется до вызова New. Обычно это делается во время InitializeComponent (). Я предлагаю вам создать свой журнал после вызова InitializeComponent (в новом).

Кроме того, могу ли я предложить вам создать собственный элемент управления (который наследуется от RichTextBox). Другой вариант заключается в том, что ваш класс журналов хранит только информацию, а форма обеспечивает ее отображение в текстовом поле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...