The Syncfusion native Blazor components library offers 70+ UI and Data Viz web controls that are responsive and lightweight for building modern web apps.
.NET PDF framework is a high-performance and comprehensive library used to create, read, merge, split, secure, edit, view, and review PDF files in C#/VB.NET.
Hi,
I use a GDBG and i have a combobox control as a control in one of the cells. The problem is that if i''m writting something in the combobox and i use the cursor keys <- (left) or -> (right), the focus goes to the previous or next cell instead of moving the cursor inside the combobox.
How can i make the key event to target the combobox instead of the datagrid?
Thank you
Borja
ADAdministrator Syncfusion Team May 30, 2006 04:06 AM UTC
Hi Borja,
There is no built-in support for this. Could you try this code in Grid Style''s Control.KeyDown event.
e.Style.Control.KeyDown +=new KeyEventHandler(Control_KeyDown);
private void Control_KeyDown(object sender, KeyEventArgs e)
{
ComboBox combo = sender as ComboBox;
if(combo.Focused)
{
if(e.KeyData == Keys.Left)
{
this.gridDataBoundGrid1.CurrentCell.MoveLeft();
e.Handled = true;
}
else if(e.KeyData == Keys.Right)
{
this.gridDataBoundGrid1.CurrentCell.MoveRight();
e.Handled = true;
}
}
}
Here is a sample.
http://www.syncfusion.com/Support/user/uploads/ComboGDBG_c16e5602.zip
Let me know if this helps.
Best Regards,
Haneef
BOBorjaMay 30, 2006 08:01 AM UTC
Hi Haneef,
Actually my problem is the other way around: the combo has the focus and when i press -> (or <-) i want the cursos to move right (or left) in the text of the combobox, but instead of that the next (or previous) cell gets the focus.
I''ve a few tests implementing the combo''s KeyDown event as in the example, but when these keys (any special key) are pressed this event doesn''t get fired (grid_keydown is fired instead).
Finally i''ve got a solution this way (implementing grid''s KeyDown event instead of combo''s KeyDown event):
void gridDataBoundGrid1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (oCombo.Focused)
{
int position = oCombo.SelectionStart + oCombo.SelectionLength;
if (e.KeyData == Keys.Left)
{
oCombo.SelectionLength = 0;
if (position > 0)
oCombo.SelectionStart = position - 1;
e.Handled = true;
}
else
if (e.KeyData == Keys.Right)
{
oCombo.SelectionLength = 0;
if (position < oCombo.Text.Length)
oCombo.SelectionStart = position + 1;
else
oCombo.SelectionStart = position ;
e.Handled = true;
}
}
}
Thank you