Кнопки, которые пользователь может переименовать

У меня проблемы с кодированием некоторых кнопок. Это то, что у меня есть до сих пор:

Public Class Form1

Dim Button(12) As Button
Dim X As Integer

Private Sub EventName()
    Dim message, title, defaultValue As String
    Dim myValue As Object
    If Label4.Text = "Admin" Then
        ' Set prompt.
        Message = "Enter Product Name"
        ' Set title.
        title = "Product Name"
        defaultValue = ""   ' Set default value.

        'Display message, title, and default value.
        myValue = InputBox(Message, title, defaultValue)

        Button(X).Text = myValue
    End If
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button9.Click, Button8.Click, Button7.Click, Button6.Click, Button5.Click, Button4.Click, Button3.Click, Button2.Click, Button12.Click, Button11.Click, Button10.Click
    'Dim message, title, defaultValue As String
    'Dim myValue As Object
    For Me.X = 1 To 10

        >>>>>    <<<<<<<

    Next
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Button(1) = Button1
    Button(2) = Button2
    Button(3) = Button3
    Button(4) = Button4
    Button(5) = Button5
    Button(6) = Button6
    Button(7) = Button7
    Button(8) = Button8
    Button(9) = Button9
    Button(10) = Button10
    Button(11) = Button11
    Button(12) = Button12
End Sub

Что я пытаюсь сделать, так это то, что если я нажму кнопку 7, появится окно ввода, в котором пользователь может ввести имя кнопки. Независимо от того, что я пробовал между >>>>> <<<<<, я не могу понять это правильно.


person Craig Emerson    schedule 27.07.2012    source источник
comment
Что конкретно вы пробовали между >>>>> <<<<<, что не сработало?   -  person Gaffi    schedule 27.07.2012
comment
У меня было EventName(), и я только что вернул кнопки по порядку, поэтому, если я нажму кнопку 7, кнопка 1 будет названа, а затем кнопка 2 и т. Д.   -  person Craig Emerson    schedule 27.07.2012
comment
И доходил ли код до этой функции? На какой строчке сломался? Были ли выброшены какие-либо ошибки? И для ясности, когда вы говорите название кнопки, вы имеете в виду имя в коде или подпись на кнопке?   -  person Gaffi    schedule 27.07.2012
comment
Надпись на кнопке и нет сообщения об ошибке, и вот как я это установил   -  person Craig Emerson    schedule 27.07.2012
comment
Private Sub Button1_Click Dim message, title, defaultValue As String Dim myValue As Object For Me.X = 1 To 10 'необходимо разработать If Label4.Text = Admin Then ' Установить подсказку. message = Введите название продукта 'Установить заголовок. title = Название продукта defaultValue = ' Установить значение по умолчанию. 'Показать сообщение, заголовок и значение по умолчанию. myValue = InputBox(сообщение, заголовок, defaultValue) Button(X).Text = myValue End If   -  person Craig Emerson    schedule 27.07.2012
comment
См. ответ @LarsTech. Похоже, он понял, хотя его InputBox аргументы не совсем совпадают с вашими. Удалите цикл и перейдите прямо к этому методу.   -  person Gaffi    schedule 27.07.2012


Ответы (1)


Похоже, вы просто хотите, чтобы человек нажал на кнопку и изменил текст этой кнопки?

Если это правильно, что-то вроде этого будет работать в вашем методе щелчка:

With DirectCast(sender, Button)
  .Text = InputBox("Button Name", "Button Name", .Text)
End With

Если для каждой кнопки требуется один и тот же ввод, попробуйте что-то вроде этого:

Dim value As String = InputBox("Button Name", "Button Name")
For Each btn As Button In Buttons
  If btn IsNot Nothing Then
    btn.Text = value
  End If
Next

Вам следует серьезно подумать о том, чтобы отказаться от использования этого массива кнопок. Если вам нужно сохранить ссылку на эти кнопки в списке, используйте вместо этого List(of Button).

person LarsTech    schedule 27.07.2012
comment
ВАУ, я искал способ, лол, это намного проще, спасибо большое. - person Craig Emerson; 27.07.2012
comment
Еще одна вещь: есть способ использовать имя кнопки в текстовом поле. - person Craig Emerson; 27.07.2012
comment
@CraigEmerson Я сделал это с первой версией. Если все кнопки говорят одно и то же, используйте сохраненную переменную для третьего параметра (который я пропустил во второй версии). - person LarsTech; 27.07.2012
comment
спасибо за помощь. Я разместил еще один вопрос stackoverflow.com/q/11691017/1557944, который следует из этого и может сделать с немного больше помощи. - person Craig Emerson; 27.07.2012