Custom Button - Как отключить событие Click? - PullRequest
0 голосов
/ 24 июня 2011

У меня есть класс, который наследует объект Button.У меня есть простая функция и обработчик событий для Click.Когда я помещаю это в другую форму окна - работает отлично!Однако теперь я хочу иметь возможность отключить пользователя от выбора события «Клик», когда оно используется.Надеюсь, это имеет смысл.

В качестве попытки уточнить: у меня есть кнопка Cusom, но я не хочу, чтобы пользователь мог запрограммировать событие Click при помещении его в форму.

Я устал от этого, но ... Я, очевидно, плохо знаком с .NET

РЕДАКТИРОВАТЬ : вот код

Public NotInheritable Class clsRandomGenerator
Inherits Button

Protected Const ALPHA_UPPERCASE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Protected Const ALPHA_LOWERCASE As String = "abcdefghijklmnopqrstuvwxyz"
Protected Const NUMERIC As String = "0123456789"
Protected Const SPECIAL_CHAR As String = "!@#$%^&*"
Protected Const ALPHA_NUMERIC As String = ALPHA_UPPERCASE & ALPHA_LOWERCASE & NUMERIC & SPECIAL_CHAR

Public Shared Function GetRandomPassword() As String
    Dim RandomData As String = String.Empty
    Dim intPosition As Integer = 0
    Dim intLength As Integer = 8
    Dim data As Byte() = New Byte(intLength) {}
    Dim charSetLength As Integer = ALPHA_NUMERIC.Length
    Dim randomize As RandomNumberGenerator = RandomNumberGenerator.Create()

    randomize.GetBytes(data)
    For index As Integer = 0 To intLength - 1
        intPosition = data(index)
        intPosition = intPosition Mod charSetLength
        RandomData = (RandomData + ALPHA_NUMERIC.Substring(intPosition, 1))
    Next
    Return RandomData
End Function

Private Sub clsRandomGenerator_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click

    MessageBox.Show(GetRandomPassword)

End Sub

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

Я "думаю", я понимаю, что вы пытаетесь сделать.Попробуйте переопределить событие OnClick и просто закомментировать MyBase.OnClick (e), чтобы предотвратить его передачу клиенту:

Public Class ButtonEx
  Inherits Button

  Protected Overrides Sub OnClick(e As EventArgs)
    'MyBase.OnClick(e)  'Eat it
    MessageBox.Show("Clicks from inside!")
  End Sub

End Class

А затем из вашей формы:

Private Sub ButtonEx1_Click(sender As Object, e As EventArgs) Handles ButtonEx1.Click
  'This should not pop up:
  MessageBox.Show("Does this click?")
End Sub
2 голосов
/ 24 июня 2011

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

Не видя код, было бы предложение пометить ваш класс как «запечатанный».Это не обязательно помешает кому-либо зарегистрировать новый обработчик события нажатия с помощью вашей кнопки, но нам нужно увидеть некоторый код и, возможно, лучшее описание того, что вы пытаетесь выполнить, чтобы действительно помочь вам должным образом.:

Это может помочь.

Шаблон C # для предотвращения подключения обработчика событий дважды

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