Have a checkbox on a form. "UltraCheckEditor"
It can be bound to datasource via Checked , CheckedValue or CheckState.
I chose "Checked".
Want to run an SQL query "before update".
I chose _BeforeCheckStateChanged but _ValidateCheckState may be good too.
Problem is that all these events seem to fire when loading the form and when changing records.
If I could find a way to determine change (e.g. like when comparing .text to .value) then I could make it all work in _BeforeCheckStateChanged.
How do I do this?
The query only really wants to be run when the box is checked by the user and not run for uncheck or systems events.
Please help!!!
Since you don't have control over when the binding manager sets the value, you can't trap for setting of the control's value programmatically. You could, however, ensure that the control does not have the input focus before doing something that will trigger a change in the current record, and only running your query then:
Example:private void ultraCheckEditor_CheckedChanged(object sender, EventArgs e){ UltraCheckEditor checkEditor = sender as UltraCheckEditor; if ( checkEditor.Focused ) { // TODO: Run query }}
Thanks.
In _ValidateCheckState it is simple enough to be able to test too.
Console.WriteLine(e.NewCheckState.ToString().Equals("Checked"));
UltraCheckEditor tt = (UltraCheckEditor)sender;
Console.WriteLine(tt.Checked); //false
Console.WriteLine(tt.CheckedValue); //false
Console.WriteLine(tt.CheckState); //unchecked
But having the code in _BeforeCheckStateChanged is better because you can messagebox the user and if they select NO or CANCEL you can then call e.Cancel = true.
_ValidateCheckState does nto have e.Cancel. So is more limited to being an information popup messagebox only.
The focus way will work - so i will use that, thanks.