I want to do custom handling of special keys such as the Tab key or F2 in the TextBox of a column in the DataGrid. How do I subc
2006-09-13 15:45
615 查看
The TextBox property of the DataGridTextBoxColumn is ReadOnly, so you just cannot set a new derived TextBox into it. One solution is to derive a TextBox, and then have it use the derived TextBox in the DataGridTextBoxColumn instead of the 'generic' TextBox that is there. This is the same technique used in our combobox in a column sample. In that sample, the generic textbox was 'replaced' with a combobox. Here, we replace it with a derived TextBox where we can easily override virtual members.
A reasonable question is why not just use the event mechanism of the existing TextBox to modify behavior. Events like KeyPress would allow us to do some things PROVIDED they get hit. Due to the key processing architecture of the FrameWork, for some special keys, these key events are not always fired. And if they are fired, sometimes it is impossible to avoid the default processing if this is the intent you have. Overriding a virtual function, doing something special, and then NOT calling the baseclass is a standard way of avoiding default processing.
In this sample (both VB and CS), we override PreProcessMessage and avoid processing the Keys.Tab key. You can modify the code to not process Keys.F2 as well. DataGridTextBoxColumn is subclassed so it can use our derived TextBox.
A reasonable question is why not just use the event mechanism of the existing TextBox to modify behavior. Events like KeyPress would allow us to do some things PROVIDED they get hit. Due to the key processing architecture of the FrameWork, for some special keys, these key events are not always fired. And if they are fired, sometimes it is impossible to avoid the default processing if this is the intent you have. Overriding a virtual function, doing something special, and then NOT calling the baseclass is a standard way of avoiding default processing.
In this sample (both VB and CS), we override PreProcessMessage and avoid processing the Keys.Tab key. You can modify the code to not process Keys.F2 as well. DataGridTextBoxColumn is subclassed so it can use our derived TextBox.
相关文章推荐
- How do you copy the contents of an array to a std::vector in C++ without looping? (From stack over flow)
- How can I put a checkbox in a column of my DataGrid?
- In Delphi XE2 FireMonkey - How do i change the color of a button after pressing it
- How do I write a LINQ to Entities query which has the equivalent of the SQL “in” keyword?
- How do I sort an array of hashes by a value in the hash?
- How do you get the length of a string in jQuery?
- How Do use the ImageButton in DataGrid...
- 【摘录】How do you change the drawing order of views in Android?
- How do I sort an array of hashes by a value in the hash?
- How do I make my GUI plot into an axes within the GUI figure rather than inside of a new figure in M
- How Do use the ImageButton in DataGrid...
- flex/in the datagrid,how to get the new value of cell in the datagrid after edit
- How can I put a checkbox in a column of my DataGrid?
- How do I get the name of an object's type in JavaScript
- Do you know the sizes of these things in real memory?
- How To Add/Increase The Size Of Redo Log Files In Rac Environment? (文档 ID 779306.1)
- How to select the full row in DataGrid
- C++: How is the process of function calling in C++
- How You Can Cash In On The Green Gold Rush of 2014
- 如何在参考文献中优雅地引用URL?How do you get nicely formatted URLs in the bibliography?