' auf dem Formular befindet sich ein ListView mit Namen ListView1 ' alle Zellen des Formulars können editiert werden Public Class Form1 ' Textbox zum Editieren der Einträge Private _tbEdit As TextBox = New TextBox() Private _lvItemEdit As ListViewItem = Nothing Private _lvSubItemEdit As ListViewItem.ListViewSubItem = Nothing Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' Textbox initialisieren _tbEdit.Visible = False ' Rahmen entfernen, damit die Textbox genau in die Zelle des ListViews passt _tbEdit.BorderStyle = BorderStyle.None ' Eventhandler für die Textbox hinzufügen AddHandler _tbEdit.Leave, AddressOf Me._tbEdit_Leave AddHandler _tbEdit.KeyPress, AddressOf Me._tbEdit_KeyPress ' der Form hinzufügen Me.Controls.Add(_tbEdit) End Sub Private Sub _tbEdit_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) EndEditing(True) End Sub Private Sub _tbEdit_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Select Case e.KeyChar Case Chr(Keys.Escape) EndEditing(False) Case Chr(Keys.Enter) EndEditing(True) End Select End Sub Private Sub EndEditing(ByVal AcceptChanges As Boolean) If Not IsNothing(_lvSubItemEdit) Then If (AcceptChanges) Then _lvSubItemEdit.Text = _tbEdit.Text End If End If ' muss vor _tbEdit.Visible = False gesetzt werden, ' da das Event ein zweites mal durch _tbEdit_Leave aufgerufen wird _lvItemEdit = Nothing _lvSubItemEdit = Nothing _tbEdit.Visible = False End Sub Private Sub ListView1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListView1.MouseUp Dim htInfo As ListViewHitTestInfo = ListView1.HitTest(e.X, e.Y) _lvItemEdit = Nothing _lvSubItemEdit = Nothing If Not IsNothing(htInfo) Then If Not IsNothing(htInfo.Item) And Not IsNothing(htInfo.SubItem) Then Dim iCol = htInfo.Item.SubItems.IndexOf(htInfo.SubItem) ' Alles außer Spalte 1 editieren If (iCol > 0) Then _lvItemEdit = htInfo.Item _lvSubItemEdit = htInfo.SubItem End If End If End If End Sub Private Sub ListView1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick If Not IsNothing(_lvItemEdit) And Not IsNothing(_lvSubItemEdit) Then ' Größe anpassen _tbEdit.Top = ListView1.Top + _lvSubItemEdit.Bounds.Top + 2 _tbEdit.Left = ListView1.Left + _lvSubItemEdit.Bounds.Left + 2 _tbEdit.Width = _lvSubItemEdit.Bounds.Width _tbEdit.Height = _lvSubItemEdit.Bounds.Height ' Inhalt übergeben _tbEdit.Text = _lvSubItemEdit.Text ' anzeigen _tbEdit.Visible = True _tbEdit.BringToFront() _tbEdit.Focus() End If End Sub End Class
Kategorien
-
Neueste Beiträge
- [SAP] Drucker für Benutzer festlegen
- [SAP Fiori] Fiori Launchpad erweitern, Systeminformationen im Launchpad anzeigen
- [SAP Gateway] ODATA V4 Service für anonymen Zugriff einrichten
- [ABAP] Varianten eines Reports lesen
- Warum Krebspatienten so viel Gewicht verlieren
- [SAP Fiori] ABAP RESTful Application Programming Model (RAP)
- [SAP] Events und Typkoppelungen
- [SAP Gateway] Daten versenden über einen eventbasierten Aufruf einer OData-Funktion
- [ABAP] SE80: Tricks für den ABAP-Editor
- [SAP] Kurz- und Langtexte in Objekten suchen