Moin!
ich habe ein einfaches Datagridview erstellt für eine Wertebearbeitung.
Die Daten werden einfach zugewiesen und später auch ausgelesen.
Spoiler anzeigen
Hier nun mein Wunsch und die Frage, ob es (wie) geht oder alles nur ein Wunschgedanke bleibt.
1.) Wenn ich eine Zelle (2. Spalte) für die Bearbeitung anklicke sind hierfür in der Regel 2-3 Klicks erforderlich - geht das auch einfacher?
2.) Bei einigen Zellen sind Datumsangaben zu hinterlegen. Kann man die Eingabe irgendwie vereinachen? Zum Beispiel, dass dort ein Kalender auftauscht oder ein Eingabefeld für Datumsangaben?
Gruß Jan
ich habe ein einfaches Datagridview erstellt für eine Wertebearbeitung.
Die Daten werden einfach zugewiesen und später auch ausgelesen.
VB.NET-Quellcode
- Imports System.Windows.Forms
- Imports System.Data
- Imports System.Collections
- Public Class frm_GsewGenehmigung_EditTags
- Private _Data As New Dictionary(Of String, String)
- Public Sub New(Data As Dictionary(Of String, String))
- ' Dieser Aufruf ist für den Designer erforderlich.
- InitializeComponent()
- ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- _Data = Data
- End Sub
- Public ReadOnly Property Tags2Set() As Dictionary(Of String, String)
- Get
- Return _Data
- End Get
- End Property
- ''' <summary>
- ''' Abfangen von Fehlern in der Befüllung - Projekt
- ''' </summary>
- Private Sub DataGridView_DataError(ByVal sender As Object,
- ByVal e As DataGridViewDataErrorEventArgs) _
- Handles DataGridView.DataError
- MessageBox.Show("Fehler aufgetreten " _
- & e.Context.ToString())
- If (e.Context = DataGridViewDataErrorContexts.Commit) _
- Then
- MessageBox.Show("Fehler übergeben (commit)")
- End If
- If (e.Context = DataGridViewDataErrorContexts _
- .CurrentCellChange) Then
- MessageBox.Show("Zell wechsel")
- End If
- If (e.Context = DataGridViewDataErrorContexts.Parsing) _
- Then
- MessageBox.Show("Parsing-Fehler")
- End If
- If (e.Context =
- DataGridViewDataErrorContexts.LeaveControl) Then
- MessageBox.Show("Fehler beim Verlassen des Steuerelementes")
- End If
- If (TypeOf (e.Exception) Is ConstraintException) Then
- Dim view As DataGridView = CType(sender, DataGridView)
- view.Rows(e.RowIndex).ErrorText = "ein Fehler"
- view.Rows(e.RowIndex).Cells(e.ColumnIndex) _
- .ErrorText = "ein Fehler"
- e.ThrowException = False
- End If
- End Sub
- Private Sub Data2Grid()
- Try
- DataGridView.Rows.Clear()
- Dim ErrMsgDetail As String = ""
- Try
- ErrMsgDetail = "Schleifenbeginn"
- For Each kvp As KeyValuePair(Of String, String) In _Data
- ' Tabelle befüllen
- Dim row As ArrayList = New ArrayList From {
- kvp.Key.ToString,
- ""
- }
- DataGridView.Rows.Add(row.ToArray)
- Next
- Catch ex As Exception
- MessageBox.Show("Fehler beim Datensatz auslesen (Spalte:= " & ErrMsgDetail & ")" & Environment.NewLine & ex.ToString)
- End Try
- Catch ex As Exception
- MessageBox.Show("Fehler beim Befüllen der Datentabelle'" & Environment.NewLine & ex.ToString, "Fehler in Anwendung", MessageBoxButtons.OK, MessageBoxIcon.Error)
- End Try
- End Sub
- Private Sub frm_EditGenehmigungTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Data2Grid()
- End Sub
- Private Sub bt_Clipboard_Click(sender As Object, e As EventArgs) Handles bt_Clipboard.Click
- Dim Msg As String = ""
- For Each kvp As KeyValuePair(Of String, String) In _Data
- Msg &= kvp.Key.ToString() & Environment.NewLine
- Next
- My.Computer.Clipboard.SetText(Msg)
- MessageBox.Show("Tags der Word-Dokumente im Zwischenspeicher", "Administration", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End Sub
- Private Sub bt_Anwenden_Click(sender As Object, e As EventArgs) Handles bt_Anwenden.Click
- Dim Result As New Dictionary(Of String, String)
- Dim xRow As Integer = 0
- For Each Zeile As DataGridViewRow In DataGridView.Rows
- Dim Key As String = DataGridView.Rows(xRow).Cells(0).Value
- Dim Value As String = DataGridView.Rows(xRow).Cells(1).Value
- If String.IsNullOrEmpty(Value) = False Then Result.Add(Key, Value)
- xRow = xRow + 1
- Next
- _Data = Result
- Me.Close()
- End Sub
- End Class
Hier nun mein Wunsch und die Frage, ob es (wie) geht oder alles nur ein Wunschgedanke bleibt.
1.) Wenn ich eine Zelle (2. Spalte) für die Bearbeitung anklicke sind hierfür in der Regel 2-3 Klicks erforderlich - geht das auch einfacher?
2.) Bei einigen Zellen sind Datumsangaben zu hinterlegen. Kann man die Eingabe irgendwie vereinachen? Zum Beispiel, dass dort ein Kalender auftauscht oder ein Eingabefeld für Datumsangaben?
Gruß Jan