Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Обработка события для DataGridTextBox


Автор: Michigan 28.11.2006, 16:04
При заполнении DataGrid, использую её составляющую DataGridTextBox (для обработки входных значений). Когда ввожу символьные данные событие KeyPress обрабатывается отлично, а при нажатии клавиши Enter ничего не происходит. Как с этим быть ... ?

Автор: thomas 28.11.2006, 17:33
if (e.KeyChar==13)
{
бла-бла-бла
}
или
if e.KeyChar=vbCr(или ControlChars.Cr) then
бла-бла-бла
end if

 smile 

Автор: Michigan 28.11.2006, 18:05
Что касается обычного TextBox - я согласен, а вот с  DataGridTextBox ... OHO даже не хочет входить в обработчик события KeyPress !?

Автор: thomas 29.11.2006, 00:14
Michigan, 
Привет.
Посмотри ка в http://search.microsoft.com/results.aspx?mkt=ru-RU&setlang=ru-RU&s5=on&q=+DataGridTextBox что они пишут о DataGridTextBox;

и http://msdn.microsoft.com/library/rus/default.asp?url=/library/RUS/cpref/html/frlrfSystemWindowsFormsDataGridTextBoxClassOnKeyPressTopic.asp похоже то что нужно.
Успехов.  smile 

ЗЫ и наверное не плохо бы указать какая версия VS у тебя стоит. 

Автор: Michigan 29.11.2006, 14:54
В MSDNe нашел что как-то можно обрабатывать через делегаты или через защищенный метод OnKeyPress, или что-то вроде того, но как я не извращался ... ничего не выходит. (Работаю я в VB.NET Visual Studio 2003)

Автор: Yama 29.11.2006, 15:36
Попробуй поставить 2005 студию. И, кстати, если тебе надо просто что-либо ввести в БД как тип [Memo](для MS Access, с другими плотно пока не работал), сделай просто richTextBox и по нажатию кнопки Ок SQL-коммандой типа insert into table1.Memo values ([richTextBox1.Text]) добавь нужные тебе данные в таблицу.

Автор: DarkDragon 4.12.2006, 16:17
Вообщем несколько клавиш в дата грид, используются для системных нужд (относительно
самого контрола, т. е. ф-ции перемещения с дата грид текст бокс на другой дгтб и т. д.), и в
это количество, входит клавиша Enter, и её трудно будет перепрограммировать, хотя могу.
Просто клавиши с которыми работает сам DataGrid(для своих нужд), они не едут на обработку в OnKeyPress, OnKeyDown, OnKeyUp.
Но вообщем можешь присобачить какие небудь другие клавиши.
Чтобы это сделать используй следующий обработчик события.

Код

    Private Sub DataGrid1_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles DataGrid1.ControlAdded
        If TypeOf (e.Control) Is DataGridTextBox Then ' Проверка типа контрола
            Dim dt As DataGridTextBox = CType(e.Control, DataGridTextBox) 
            AddHandler dt.KeyPress, AddressOf DataGridTextBox1_KeyPress ' Добавления метода KeyPress, к событию DataGridTextBox
        End If
    End Sub


Ну а если пряма так нужно именно Enter, свистни по PM, попробую сделать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)