2013-05-16 4 views
0

Я просто хочу подключить два произвольных элемента управления, чтобы, если один щелкнул, другой должен действовать так, как если бы его щелкнули - возможно ли это даже отдаленно? кажется, что ДОЛЖЕН быть таким легким, но интернет кажется сухим, если только я просто не знаю, как правильно задать вопрос ... Я вижу способ «щелкнуть» кнопку управления, но что, если цель не кнопка? - Я не знаю имя какой-либо функции, которая может быть вызвана событием click этого элемента управления, поэтому я не могу назвать его напрямую. Я предполагаю, что есть какой-то способ использования API для Windows, но я ничего не могу найти, что это хорошо, просто VBКак смоделировать событие click в VB Windows Forms

Пример

я нажимаю контроль этикетки на форме. Я хочу обработать это событие щелчка, запустить одну строку кода, а затем смоделировать событие click на связанном элементе управления RadioButton

Возможно ли это? Как?

ответ

1

Если вам необходимо, звоните (System.Windows.Forms.Controls.) Control.InvokeOnClick

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.invokeonclick%28v=vs.71%29.aspx

или даже RadioButton.PerformClick

http://msdn.microsoft.com/en-us/library/system.windows.forms.radiobutton.performclick.aspx

+0

почему вы говорите «, если необходимо «? Казалось бы, интернет согласен, так как я не мог найти кого-либо, рекомендующего его, но его не осуждали, так как же его использовать? –

+0

Речь идет о разделении пользовательского интерфейса и макета программы. Если все, что вам действительно нужно, это радиокнопки с ярлыками, на которые вы можете щелкнуть, поэтому классы переключателей имеют свойство Text. Кардинальный грех, с которым я имею дело, в моей дневной работе - это «формальный дизайн», где значимые объемы программного кода скрыты в обработчиках событий устаревшей программы Windows. Это затрудняет обнаружение, сложность отладки и невозможность автоматического тестирования. Лучше использовать события для запуска программного кода, если по какой-либо другой причине он освобождает вас от повторного дизайна последнего интерфейса. – DougM

+0

в моем случае - похоже, что вы создаете программу, которую вам не нравится открывать. У меня есть текстовые поля, которые отображаются как метки (TabStop false и т. Д.) До тех пор, пока Ctrl + не щелкнут, и в этот момент они станут доступны для редактирования. если щелкнуть без Ctrl, я бы предпочел, чтобы они действовали так, как будто они являются частью другого элемента управления, например, обычного текстового поля или переключателя. (это личная программа интереса, поэтому шансов на то, что вы ее обуздали, практически не существует) –

1

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

+0

Это не будет обрабатывать другие eventhandlers прикрепленные к целевому контролю, хотя и, возможно, некоторые другие вещи - если ее не представляется возможным, его не представляется возможным - я просто надеюсь, что кто-то знает, иначе –

0

Это, как вы выполняете выполнение одного и того же кода независимо от того, какое событие управления было запущено.

Private Sub ClickMe() 
    'code to execute 
End Sub 

Private Sub label1_Click(...) ... 
    ClickMe() 
End Sub 

Private Sub rb_checked(...) ... 
    ClickMe() 
End Sub 
Смежные вопросы