Nextrp [CPP] RU + Many GEOs Игра на карте России | NEXTRP

Как я могу сослаться на элемент управления в его событии? (без использования его имени)

.net vb.net

387 просмотра

4 ответа

5990 Репутация автора

Есть ли способ в .net для общего обращения к элементу управления (чтобы при изменении имени элемента управления и т. Д.) У вас не возникало проблем.

Т.е. версия ключевого слова "me" на уровне объекта.

Итак, я хотел бы использовать что-то общее вместо RadioButton1 в примере ниже.

Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged

        If RadioButton1.Checked Then 
           Beep()

End Sub
Автор: Clay Nichols Источник Размещён: 01.12.2008 06:28

Ответы (4)


8 плюса

14600 Репутация автора

Да, параметр «отправитель» - это элемент управления, который вызвал событие.

Автор: bobwienholt Размещён: 01.12.2008 06:30

2 плюса

87955 Репутация автора

Вы можете выбрать название мероприятия. Вы можете сделать это с окнами событий (рядом с окнами свойств) или внутри кода. Вы выбираете имя все время. Вы можете просто использовать «checkedEvent».

this.checkbox.EventXYZ += new EventXZY(checkedEvent);

Внутри этого метода вы можете использовать объект-отправитель и CAST его (CheckBox) и использовать его свойство ... и поведение ...

public ... checkedEvent(object sender,...)
    ((RadioButton)sender).....

Вы можете найти отличную статью , которая объяснит вам все в VB.NET с событием TextBox (у него есть несколько текстовых полей и только 1 метод для их обработки:

альтернативный текст
(источник: clip2net.com )

Автор: Patrick Desjardins Размещён: 01.12.2008 06:30

3 плюса

8603 Репутация автора

Решение

Посмотрим, помню ли я VB.NET:

Dim rb as RadioButton = sender
If rb.Checked Then...
Автор: Cristian Libardo Размещён: 01.12.2008 06:31

2 плюса

146 Репутация автора

Если у вас есть только один элемент управления, который запускает обработчик событий, тогда нет особых оснований обобщать код, поэтому вам не нужно ссылаться на фактическое имя кнопки. Компиляция прервется, если элемент управления не существует.

Однако, если у вас есть несколько элементов управления, подключенных к одному и тому же обработчику событий, вам следует использовать первый аргумент (отправитель), который передается в обработчик. Теперь вы можете сделать что-то общее для любого элемента управления, который вызвал событие:

Private Sub rbtn_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim rbtn As RadioButton = TryCast(sender, RadioButton)
    If rbtn IsNot Nothing Then
        If rbtn.Checked Then
            rbtn.Text = rbtn.Text & "(checked)"
        End If
    End If
End Sub
Автор: thoughtcrimes Размещён: 01.12.2008 06:51
Вопросы из категории :
32x32