DataGridBoolColumn auch ohne DoubleClick "checken"

JJB

Cogito ergo brumm
TachTach !

Hab da mal ne Frage.
Ich habe ein DataGrid mit einer Bool Spalte. Aber um die Checkboxes darin anzuklicken muss man immer zwei mal klicken.
Einmal um die Cell auszuwählen und einmal um die Checkbox zu setzen.

Hat jemand ne Idee, wie das auch mit einem Klick geht ?

Ich erinnere mich an ein Flag namens AutoCheck, habe es aber nicht gefunden.
Das MouseEvent in einen DoubleClick zu verwandeln, wäre auch noch eine Möglichkeit, aber wie löse ich einen MouseClick aus ohne in die API zu steigen ?
Einfach die Cell zu ermitteln und sie auf Checked = true zu setzen wäre noch einfacher. Aber ich kann gerade mal die Zeilennummer des Klicks abfragen, an die Cell komme ich nicht.

Hat irgendjemand eine Lösung ?


PS: Hatte bei Google keinen Erfolg, sonst wäre ich ja nicht hier.
 
Also, ich hab da mal nen Hack drum geschrieben. Ich glaube, das ist nicht sehr sauber aber es funktioniert. (Und das ist in unserer Branche das wichtigste, nicht wahr ?)

Code:
MyDataGrid : Das Datagrid
MyDataSet : Das Dataset welches als Datenquelle dient
MyList : Ein Element/Tabellen Form im Dataset
theBoolColumnIndex : Die Spalte in MyDataGrid, welche vom Typ Bool ist
MyBoolColumn : Name des Boolwertes im Dataset

MyDataSet.MyListRow aRow = (MyDataSet.MyListRow)MyDataSetInstance.MyList.Rows[MyDataGrid.CurrentRowIndex];

if(MyDataGrid.CurrentCell.ColumnNumber == theBoolColumnIndex)
   aRow.MyBoolColumn = !aRow.MyBoolColumn;

Ich habe also aus dem DataSet jene Row aus der Tabelle geholt, welche den selben Index hat, wie die aktuell gewählte Row im DataGrid (funktioniert, solange DataGrid nicht AllowSorting = true), dann habe ich, für den Fall dass aktuelle Spalte im DataGrid richtig ist, in der ermittelten Row den BoolWert der entsprechenden Spalte invertiert.

So kann ich mit nur einem Klick Werte im DataGridBoolColumn ändern.

Geht aber nur wenn das DataGrid nicht sortiert wird. Da sonst die Indizes der Rows im DataGrid nicht mehr mit denen im DataSet übereinstimmen. Und das macht es irgendwie schlampig.
 
Zurück