Как получить доступ к функции Format в производном классе ComboBox? - PullRequest
0 голосов
/ 15 марта 2020

Я пишу пользовательский элемент управления Combobox и не могу использовать функцию Format(). Редактор помечает строку формата как ошибку.

Public Class TestCombo
    Inherits ComboBox
    Protected Overrides Sub OnDrawItem(ByVal e As DrawItemEventArgs)
        Dim MyStr = Format(5459.4, "##,##0.00")    ' The error is here.
    End Sub
End Class

После небольшого изучения я обнаружил, что Combobox использует ListControl в качестве события. Как я могу сказать редактору обратиться к функции, а не к событию?

1 Ответ

1 голос
/ 15 марта 2020

Как вы заметили, класс ComboBox имеет событие с именем Format (которое наследуется от ListControl). Итак, когда вы пытаетесь вызвать Format() функцию внутри ComboBox, компилятор думает, что вы пытаетесь использовать событие , потому что оно имеет самую узкую область действия , следовательно, ошибка.

Чтобы обойти это, вы можете явно вызвать имя модуля (т. е. Strings), где объявлена ​​функция Format():

Dim MyStr = Strings.Format(5459.4, "##,##0.00")

В качестве альтернативы вы можете использовать String.Format() или ToString() (что является стандартным входом. NET) :

Dim MyStr2 = String.Format("{0:##,##0.00}", 5459.4)

Dim MyStr3 = 5459.4.ToString("##,##0.00")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...