Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 | 2 |

 

  Вопрос: keydown Добавлено: 14.03.09 20:36  

Автор вопроса:  maza_____ | Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья)) | ICQ: 9968842 
Всем привет!
У меня на форме много кнопок панелей и т.д. Мне нужно сделать так что бы когда в программе нажали на кнопку допустим 1 в label.text появлялось 1 если 2 то 2.Можно ли написать 1 раз функцию или что то вроде этого, а не писать один и тотже код в событии keydown у каждого элемента формы?

Ответить

  Ответы Всего ответов: 18  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 14.03.09 23:25
Можно.. для это тебе надо через AddHandler повесить событие Click каждой кнопки на одну и туже процедуру.. Кроме этого.. есть такой приемчик: ты в свойство Tag для каждой кнопки прописываешь нужную цифру (или текст) а в событии Click получаешь из этого свойства текст и загоняешь в нужный label. В результате у тебя получится 2-3 строки кода вместо кучи процедур для каждой кнопки

Ответить

Номер ответа: 2
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #2
Добавлено: 16.03.09 17:17
А где мне найти этот AddHandler?))

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 16.03.09 17:48
maza пишет:
А где мне найти этот AddHandler?))

Нууу например в msdn.. http://msdn.microsoft.com/ru-ru/library/7taxzxka.aspx
или в гугле с яндеком.. надеюсь тебя в поисковых машинах не забанили? или ты вообще искать не пробовал?

Ответить

Номер ответа: 4
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #4
Добавлено: 16.03.09 22:06
EROS, Я вроде разобрался кое как сам) посмари плз правильно или можно как то сократить?
  1. AddHandler (Button1.KeyDown), AddressOf Form1_KeyDown
  2.         AddHandler (Button2.KeyDown), AddressOf Form1_KeyDown
  3.         AddHandler (Button3.KeyDown), AddressOf Form1_KeyDown
  4.         AddHandler (Button4.KeyDown), AddressOf Form1_KeyDown
  5.         AddHandler (Button5.KeyDown), AddressOf Form1_KeyDown
  6.         AddHandler (Button6.KeyDown), AddressOf Form1_KeyDown
  7.         AddHandler (Button7.KeyDown), AddressOf Form1_KeyDown
  8.         AddHandler (Button8.KeyDown), AddressOf Form1_KeyDown
  9.         AddHandler (Button9.KeyDown), AddressOf Form1_KeyDown
  10.         AddHandler (Button10.KeyDown), AddressOf Form1_KeyDown
  11.         AddHandler (Button11.KeyDown), AddressOf Form1_KeyDown
  12.         AddHandler (Button12.KeyDown), AddressOf Form1_KeyDown
  13.         AddHandler (Button13.KeyDown), AddressOf Form1_KeyDown
  14.         AddHandler (Button14.KeyDown), AddressOf Form1_KeyDown
  15.         AddHandler (Button15.KeyDown), AddressOf Form1_KeyDown
  16.         AddHandler (Button16.KeyDown), AddressOf Form1_KeyDown
  17.         AddHandler (Button17.KeyDown), AddressOf Form1_KeyDown
  18.         AddHandler (Button18.KeyDown), AddressOf Form1_KeyDown
  19.         AddHandler (Button19.KeyDown), AddressOf Form1_KeyDown
  20.         AddHandler (Button20.KeyDown), AddressOf Form1_KeyDown
  21.         AddHandler (Button21.KeyDown), AddressOf Form1_KeyDown
  22.         AddHandler (Button22.KeyDown), AddressOf Form1_KeyDown
  23.         AddHandler (knpBackspace.KeyDown), AddressOf Form1_KeyDown
  24.         AddHandler (textt.KeyDown), AddressOf Form1_KeyDown

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 16.03.09 22:35
maza пишет:
EROS, Я вроде разобрался кое как сам) посмари плз правильно или можно как то сократить?

Ну не совсем и сам.. ))) Но молодец, что хоть пытаешь что то сам сделать.. :-)
Во-первых.. для чего тебе событии KeyDown у кнопки? У конпки, как правило, обрабатывают событие Click
Во-вторых.. твой код, в принципе, работать будет, но это, прямо скажем, кривой код. Правильнее было бы перебрать коллекцию контролов на форме и в цикле подключить все обработчики событий. Сделать это можно в Form_Load примерно так:
  1. C#
  2.             foreach (Control item in this.Controls)
  3.             {
  4.                 if (item is Button)
  5.                     item.Click += new EventHandler(item_Click);// Вместо этого у тебя будет твой AddHandler
  6.             }



ну и чтобы тебе легче было понимать мой код можешь воспользовать одним из online переводчиков кода, например этим:
http://converter.telerik.com/
переводит достаточно криво но общий смысл ты уловить сможешь..

Ответить

Номер ответа: 6
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #6
Добавлено: 16.03.09 22:39
Просто я вопрос не очень точно задал)) мне нужно нажатие клавиш с клавиатуры ))

Ответить

Номер ответа: 7
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #7
Добавлено: 16.03.09 22:40
Спасибо кстате:)

Ответить

Номер ответа: 8
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #8
Добавлено: 16.03.09 22:55
Чо то не хочет работать этот код:
  1.     For Each item As Control In Me.Controls
  2.             If TypeOf item Is Button Then
  3.                 AddHandler (item.KeyDown), AddressOf Form1_KeyDown
  4.             End If
  5.         Next

Ответить

Номер ответа: 9
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 16.03.09 23:06
maza пишет:
AddHandler (item.KeyDown), AddressOf Form1_KeyDown

скобки убери - это раз.. во вторых кнопки должны лежать на форме.. если же они у тебя лежат в каком нибудь контейнере типа Panel(TabPage и т.д.) , то и указывать надо
For Each item As Control In Panel1.Controls

и на будущее, прежде чем писать
Чо то не хочет работать этот код

будь добр напиши что за ошибку пишет.. я хоть и обладаю телепатическими способностями но не до такой степени

Ответить

Номер ответа: 10
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #10
Добавлено: 16.03.09 23:07
никакой ошибки нету всё правильно но они у меня на панеои лежат

Ответить

Номер ответа: 11
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #11
Добавлено: 16.03.09 23:10
они у меня на groupbox'e лежат значит нада писать groupbox.controls?

Ответить

Номер ответа: 12
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #12
Добавлено: 16.03.09 23:15
я пишу:
  1.   For Each item As Control In Panel.Controls
  2.             If TypeOf item Is Button Then
  3.                 AddHandler item.KeyDown, AddressOf Form1_KeyDown
  4.             End If
  5.         Next

Ошибка:Error 1 Reference to a non-shared member requires an object reference.

Ответить

Номер ответа: 13
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #13 Добавлено: 16.03.09 23:16
ну да.. только вместо groupbox надо писать реальное имя этого контрола, например groupbox1.Controls

Controls - это коллекция дочерних элементов контейнера, в данном случае у тебя groupbox1 выступает в роли контейнера для кнопок и остальных элементов

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 16.03.09 23:17
maza пишет:
Error 1 Reference to a non-shared member requires an object reference.

все правильно, эта ошибка говорит о том, что у тебя на форме нету контрола с именем Panel

Ответить

Номер ответа: 15
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #15
Добавлено: 16.03.09 23:18
Воо)))урааа работает!! спасибо большое!)) а нельзя написать что нибудь типа For Each item As Control In groupbox1.controls and groupbox2.controls?

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам