We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date

How to clobber the CurrentCell''s controltext when handling key-events

I want to have special keys that behave like macros or keying shortcuts that change the controltext of the current cell. For example, I''m handling CurrentCellKeyDown, and when I receive a "[" or "]" I need to rewrite the contents of the cell based on a certain calculation. I do that succesfully by setting CurrentCell.Renderer.ControlText and setting the event.Handled = true, but in the UI I end up in edit-mode with my editing text set as "]". If I ESC at that point it reverts to the value I wrote into CurrentCell.Renderer.ControlText, but how do I totally get rid of anything that thinks the current editing state is "]" (or "[")?

8 Replies

AD Administrator Syncfusion Team August 31, 2005 07:12 PM UTC

You can try casting grid.CurrentCell.Renderer to a GridTextBoxCellRenderer, call it cr. Then you can try setting cr.TextBox.Text to be the string you want to see in the editing cell.


KO Ken Overton August 31, 2005 07:43 PM UTC

When I try that I briefly see the new value that I''m writing, then the state drops into editing mode with contents "]". The final behavior I''m aiming for, btw, is to keep the cell activated and editing and allow the user to enter "]" or "[" as many times as they want, seeing the values change as I compute them. Then when they see a value they want, then they hit "return" and I do something different.


AD Administrator Syncfusion Team August 31, 2005 10:03 PM UTC

Here is a little sample using CurrentCellValidateString. http://www.syncfusion.com/Support/user/uploads/GC_77fdff7d.zip If you type a open bracket, [, it will auatomatically add ''abcd'' after the bracket.


KO Ken Overton September 1, 2005 03:00 PM UTC

Very cool! ..... but .... unfortunately doesn''t work if you use arrow keys to reach a cell. I.e., if you''re not in edit mode, it doesn''t work. But I could use this if I could just find a way to force people into that mode when I want to (like when they''ve arrowed to a cell and started typing "["''s in it). Any way I can do that. Unfortunately our users use the mouse about once an hour and do most navigation thru the keyboard.


AD Administrator Syncfusion Team September 1, 2005 04:05 PM UTC

Try setting the grid.ActivateCurrentCellBehavior property to SetCurrent.


KO Ken Overton September 1, 2005 07:42 PM UTC

>Try setting the grid.ActivateCurrentCellBehavior property to SetCurrent. Thanks again, for the suggestion. I don''t think that''s gonna be acceptable to the traders, as they can''t arrow right and left seamlessly from column to columnt with this setting; they end up arrowing through each and every character in each column.


AD Administrator Syncfusion Team September 1, 2005 08:59 PM UTC

Try this. It worked for me without using teh SetCurrent setting.
private void gridControl1_CurrentCellValidateString(object sender, GridCurrentCellValidateStringEventArgs e)
{
	if(e.Text.EndsWith("["))
	{
		GridCurrentCell cc = this.gridControl1.CurrentCell;
		if(!cc.IsEditing)
			cc.BeginEdit();

		GridTextBoxCellRenderer cr = cc.Renderer as GridTextBoxCellRenderer;
		cr.TextBox.Text = e.Text + "abcde";
		cr.TextBox.SelectionLength = 0;
		cr.TextBox.SelectionStart = cr.TextBox.Text.Length;
		e.Cancel = true;
	}
}


KO Ken Overton September 2, 2005 03:42 PM UTC

Yes! That does what I want, thanks a lot.

Loader.
Live Chat Icon For mobile
Up arrow icon