VisualBasic .NET DatagridViewNumericUpDown

DerZock

Lieutenant
Registriert
Mai 2009
Beiträge
908
Ich habe mir das DatagridViewNumericUpDown Control geladen und soweit implementiert.

Nun möchte ich allerdings ich meinen Datagridview für die zu editierende Zelle das Maximum/Minimun setzen.

Wie mache ich das?

Mein Versuch es über das DatagridView_EditingControlShowing Event zu machen schlagen mit der Meldung
"Der Wert vom Typ "System.Windows.Forms.Control" kann nicht in DataGridViewNumericUpDownElements.DataGridViewNumericUpDownCell" konvertiert werden." fehl

Code:
Private Sub dgvPasser_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles dgvPasser.EditingControlShowing
        Dim nud As DataGridViewNumericUpDownCell
        nud = CType(e.Control, DataGridViewNumericUpDownCell) // casten nicht möglich!
        nud.Maximum = 5
    End Sub
 
Du musst dir nur das Codesample anschauen, das dabei ist, dort findest du unter anderem diese Zeile:
Code:
this.dataGridViewNumericUpDownColumn1.Minimum = System.Convert.ToDecimal(this.txtMinimum.Text);

Ist zwar kein VB, dürfte aber trotzdem selbsterklärend sein ;)
 
Ja das ändert aber das Maximum / Minimum für die ganze Column.
Ich möchte aber den Maximum/Minimum Wert für jede Zelle setzen.
 
Dann musst du eben nur auf eine Zelle zugreifen und nicht auf die komplette Spalte, z.B. so:
Code:
foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
{
    var c = cell as DataGridViewNumericUpDownCell;
    decimal min = 0;

    if ((c != null) && c.IsInEditMode && decimal.TryParse(txtMinimum.Text, out min))
    {
        c.Minimum = min;
    }
}

e.Control kannst du nie zum Typ der aktuell editierten Zelle casten, da dieses Objekt vom Typ des EditingControls der Zelle ist und nicht vom Typ der Zelle selbst.
 
Zurück
Oben