2016-07-25 12 views
0

Guten Morgen.Wie mache ich Datagridview editierbar und ändere es in Zahlenformat?

Ich habe eine Datagridview in einem Formular und es ist in der Datenbank verbunden und es sieht so aus.

enter image description here

Ich habe kein Problem mit diesem Teil.

Meine Frage hier ist wie folgt. Wie kann ich die vierte Spalte editierbar machen? Ich meine ich es, indem Sie diese Eigenschaft bearbeiten können

enter image description here

und jetzt wird die Ausgabe wie folgt sein.

enter image description here

hier nun die eigentliche Frage ist, werde ich eine Frage nach den durchflußbasierte fragt, dass mein System tun.

1. Die 4. Spalte sind die Spalte, die bearbeitet werden und der Rest

2.Lets sagen, dass ich 48 wird gesetzt, wie kann ich es machen 48.00 wenn ich die Zelle verlassen werden gesperrt oder nicht bearbeitbar werden? Diese Art von Format mit .00 am Ende.

3. In der 4. Spalte können keine Buchstaben eingegeben werden.

TYSM für zukünftige Hilfe

Antwort

1
  1. Stellen Sie die ReadOnly Eigenschaft auf True für jede Spalte, die Sie nicht der Benutzer möchte in der Lage zu bearbeiten.
  2. Setzen Sie die DefaultCellStyle.Format Eigenschaft der Spalte auf "n2" oder "f2".
  3. Ich rate wahrscheinlich davon ab, weil die Tatsache, dass Sie einen Dezimalpunkt einfügen möchten, es komplexer macht. Wenn Sie entschlossen sind, weiterzumachen, sollten Sie untersuchen, wie Sie nur numerische Eingaben in einem normalen TextBox zulassen, da dies genau so funktioniert. Sie müssen lediglich auf das TextBox Steuerelement zugreifen, das für die Bearbeitung über die entsprechenden Ereignishandler des Rasters verwendet wird.

Im Beispiel unten, weil das editingTextBox Feld WithEvents deklariert wird, wird die letzte Methode, um das TextChanged Ereignis für die Bearbeitung von Steuer behandeln, während es für die Dauer der Bearbeitungssitzung zu diesem Feld zugewiesen wird.

Private WithEvents editingTextBox As TextBox 

Private Sub DataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing 
    Me.editingTextBox = DirectCast(e.Control, TextBox) 
End Sub 

Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit 
    Me.editingTextBox = Nothing 
End Sub 

Private Sub editingTextBox_TextChanged(sender As Object, e As EventArgs) Handles editingTextBox.TextChanged 
    '... 
End Sub 
0

die anderen Spalten Set = true und Ihre numerische Spalte zu Nur-Lesen = false und die defaultcellstyle.format Ihrer numerischen Spalte „## 0.00 ###“ auf und in Ihrem CellValidating Veranstaltung Datagridview, tun die ff:

Private Sub DatagridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DatagridView1.CellValidating 
    Try 
     If DatagridView1.IsCurrentCellDirty Then 
      Select Case DatagridView1.Columns(e.ColumnIndex).Name.ToUpper 
       Case "<NAME OF YOUR NUMERIC COLUMN>" 
        If Not IsNumeric(e.FormattedValue) Then 
         MsgBox("Invalid value.") 
         e.Cancel = True 
         Exit Sub 
        End If 

        If CType(e.FormattedValue, Integer) < 0 Then 
         MsgBox("Invalid value.") 
         e.Cancel = True 
         Exit Sub 
        End If 
      End Select 
     End If 
    Catch ex As Exception 
     ErrMsg(ex) 
    End Try 
End Sub 
+0

Sie müssen nicht "###, ## 0.00" verwenden. "#, 0.00" sollte den gleichen Effekt haben, aber "f2" und "n2" sind noch einfacher. Man verwendet tausend Trennzeichen und das andere nicht. Ich kann mich nie erinnern, welches das ist, aber es ist leicht genug, es herauszufinden. – jmcilhinney

+0

Beachten Sie, dass dieser Code nicht wie von der Frage angefordert ausgeführt wird. Ich würde vorschlagen, dass dies ein besserer Weg ist, aber es verhindert nicht wirklich, dass der Benutzer nicht-numerische Daten eingibt; Es räumt nur danach auf. – jmcilhinney

+0

Es prüft, ob der Eintrag numerisch ist und verhindert, dass der Benutzer die Zelle verlässt –

Verwandte Themen