Hi,

I'm trying to implement a ComboBox drop-down column for a DataGrid.
When a cell is selected in the ComboBox column I overlay a ComboBox
over the cell and call:

this.comboBox.Show();
this.comboBox.BringToFront();
this.comboBox.Focus();

Now when I press the up/down arrow keys I would expect the ComboBox
to respond to those keyboard inputs because it has the focus. But
it doesn't. Somehow the DataGrid gets the key strokes and causes
the next row in the DataGrid to be selected.

Why would this be? I'm positive the ComboBox has the focus. I
added event handlers for the DataGrid enter/leave, and the ComboBox
enter/leave events and I only see the ComboBox ones getting called.

This is really annoying. The only workaround I've found is to
derive a class from ComboBox that overrides the WndProc and
ProcessCmdKey methods and catches the keystrokes and tries to
do the correct thing. But this has problems because then I have
to catch everything (Enter, Tab, Shift-tab, Left, Right, etc.).

Now I'm having a problem processing Enter correctly. When the
ComboBox drop down list is displayed I can now go up and down
the list using the arrow keys but the only way I can correctly
select one is with the mouse. When I try to use the enter key
nothing happens because I've overridden its behavior and I'm
not sure what methods to call to make it work correctly (i.e.
commit the current choice and collapse the menu again).

I don't understand why the ComboBox isn't handling these things
automatically if it has the focus.

Any help appreciated. Thanks,

Bill

Datagrid and focus confusion by Nataliya

Nataliya
Tue Nov 11 03:57:19 CST 2003

Hi,
ComboBox in a datagrid is something I was looking for as
well and after I've done some Internet research I found
that the best place to go for your answers is here:

http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q480q

I strongly recommend this website.
It is very useful.
Do you want to implement databound combo or just fill
using .Add.Item method?

for both versions there is an answer. However, personally
I did not need either of them but something in between.
So, based on the samples in the article I've developed a
combo box that is bound but not using the ID for selection.
Anyway, if you need help let me know. I'll be happy to
help.

Sincerely,
Nataliya

>-----Original Message-----
>Hi,
>
>I'm trying to implement a ComboBox drop-down column for a
DataGrid.
>When a cell is selected in the ComboBox column I overlay
a ComboBox
>over the cell and call:
>
>this.comboBox.Show();
>this.comboBox.BringToFront();
>this.comboBox.Focus();
>
>Now when I press the up/down arrow keys I would expect
the ComboBox
>to respond to those keyboard inputs because it has the
focus. But
>it doesn't. Somehow the DataGrid gets the key strokes
and causes
>the next row in the DataGrid to be selected.
>
>Why would this be? I'm positive the ComboBox has the
focus. I
>added event handlers for the DataGrid enter/leave, and
the ComboBox
>enter/leave events and I only see the ComboBox ones
getting called.
>
>This is really annoying. The only workaround I've found
is to
>derive a class from ComboBox that overrides the WndProc
and
>ProcessCmdKey methods and catches the keystrokes and
tries to
>do the correct thing. But this has problems because then
I have
>to catch everything (Enter, Tab, Shift-tab, Left, Right,
etc.).
>
>Now I'm having a problem processing Enter correctly.
When the
>ComboBox drop down list is displayed I can now go up and
down
>the list using the arrow keys but the only way I can
correctly
>select one is with the mouse. When I try to use the
enter key
>nothing happens because I've overridden its behavior and
I'm
>not sure what methods to call to make it work correctly
(i.e.
>commit the current choice and collapse the menu again).
>
>I don't understand why the ComboBox isn't handling these
things
>automatically if it has the focus.
>
>Any help appreciated. Thanks,
>
>Bill
>.
>

Re: Datagrid and focus confusion by Dmitriy

Dmitriy
Tue Nov 11 06:06:51 CST 2003

Hi Bill,

This is the wrong way of implementing a custom column. You have probably
been inspired by an example once published by Microsoft. I don't know why on
Earth such an inconvenient way of doing things was suggested in that
example, but you should definitely avoid that and refer to recent MSDN
articles on implementing custom DataGridColumnStyles which are actually the
only right way to customize the DataGrid.

--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

"Bill C." <billybobc1210@yahoo.com> wrote in message
news:1e75a833.0311100857.286b3e13@posting.google.com...
> Hi,
>
> I'm trying to implement a ComboBox drop-down column for a DataGrid.
> When a cell is selected in the ComboBox column I overlay a ComboBox
> over the cell and call:
>
> this.comboBox.Show();
> this.comboBox.BringToFront();
> this.comboBox.Focus();
>
> Now when I press the up/down arrow keys I would expect the ComboBox
> to respond to those keyboard inputs because it has the focus. But
> it doesn't. Somehow the DataGrid gets the key strokes and causes
> the next row in the DataGrid to be selected.
>
> Why would this be? I'm positive the ComboBox has the focus. I
> added event handlers for the DataGrid enter/leave, and the ComboBox
> enter/leave events and I only see the ComboBox ones getting called.
>
> This is really annoying. The only workaround I've found is to
> derive a class from ComboBox that overrides the WndProc and
> ProcessCmdKey methods and catches the keystrokes and tries to
> do the correct thing. But this has problems because then I have
> to catch everything (Enter, Tab, Shift-tab, Left, Right, etc.).
>
> Now I'm having a problem processing Enter correctly. When the
> ComboBox drop down list is displayed I can now go up and down
> the list using the arrow keys but the only way I can correctly
> select one is with the mouse. When I try to use the enter key
> nothing happens because I've overridden its behavior and I'm
> not sure what methods to call to make it work correctly (i.e.
> commit the current choice and collapse the menu again).
>
> I don't understand why the ComboBox isn't handling these things
> automatically if it has the focus.
>
> Any help appreciated. Thanks,
>
> Bill


Re: Datagrid and focus confusion by Dmitriy

Dmitriy
Tue Dec 09 05:24:32 CST 2003

Keith,

Here are the links (mind the line wraps):

http://msdn.microsoft.com/msdnmag/issues/03/08/DataGrids/toc.asp?frame=true
http://msdn.microsoft.com/library/en-us/dnwinforms/html/wnf_CustDataGrid.asp?frame=true
http://msdn.microsoft.com/library/en-us/cpref/html/frlrfSystemWindowsFormsDataGridColumnStyleClassTopic.asp?frame=true


--
Dmitriy Lapshin [C# / .NET MVP]
X-Unity Test Studio
http://x-unity.miik.com.ua/teststudio.aspx
Bring the power of unit testing to VS .NET IDE

"Keith Lubell" <klubell@mindspring.com> wrote in message
news:eGOy8JavDHA.2712@tk2msftngp13.phx.gbl...
> Not a very helpful comment. Can we get a link to these samples please!
>
> "Dmitriy Lapshin [C# / .NET MVP]" <x-code@no-spam-please.hotpop.com> wrote
> in message news:O5r$NxEqDHA.372@TK2MSFTNGP11.phx.gbl...
> > Hi Bill,
> >
> > This is the wrong way of implementing a custom column. You have probably
> > been inspired by an example once published by Microsoft. I don't know
why
> on
> > Earth such an inconvenient way of doing things was suggested in that
> > example, but you should definitely avoid that and refer to recent MSDN
> > articles on implementing custom DataGridColumnStyles which are actually
> the
> > only right way to customize the DataGrid.
> >
> > --
> > Dmitriy Lapshin [C# / .NET MVP]
> > X-Unity Test Studio
> > http://x-unity.miik.com.ua/teststudio.aspx
> > Bring the power of unit testing to VS .NET IDE
> >
> > "Bill C." <billybobc1210@yahoo.com> wrote in message
> > news:1e75a833.0311100857.286b3e13@posting.google.com...
> > > Hi,
> > >
> > > I'm trying to implement a ComboBox drop-down column for a DataGrid.
> > > When a cell is selected in the ComboBox column I overlay a ComboBox
> > > over the cell and call:
> > >
> > > this.comboBox.Show();
> > > this.comboBox.BringToFront();
> > > this.comboBox.Focus();
> > >
> > > Now when I press the up/down arrow keys I would expect the ComboBox
> > > to respond to those keyboard inputs because it has the focus. But
> > > it doesn't. Somehow the DataGrid gets the key strokes and causes
> > > the next row in the DataGrid to be selected.
> > >
> > > Why would this be? I'm positive the ComboBox has the focus. I
> > > added event handlers for the DataGrid enter/leave, and the ComboBox
> > > enter/leave events and I only see the ComboBox ones getting called.
> > >
> > > This is really annoying. The only workaround I've found is to
> > > derive a class from ComboBox that overrides the WndProc and
> > > ProcessCmdKey methods and catches the keystrokes and tries to
> > > do the correct thing. But this has problems because then I have
> > > to catch everything (Enter, Tab, Shift-tab, Left, Right, etc.).
> > >
> > > Now I'm having a problem processing Enter correctly. When the
> > > ComboBox drop down list is displayed I can now go up and down
> > > the list using the arrow keys but the only way I can correctly
> > > select one is with the mouse. When I try to use the enter key
> > > nothing happens because I've overridden its behavior and I'm
> > > not sure what methods to call to make it work correctly (i.e.
> > > commit the current choice and collapse the menu again).
> > >
> > > I don't understand why the ComboBox isn't handling these things
> > > automatically if it has the focus.
> > >
> > > Any help appreciated. Thanks,
> > >
> > > Bill
> >
>
>