Announcement

Collapse
No announcement yet.

Datagridview an letzter Stelle innerhalb einer Zelle springen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datagridview an letzter Stelle innerhalb einer Zelle springen

    Hallo Zusammen,

    ich bin neu hier im Forum, habe das Programmieren 2003 während meines Abendstudiums gelernt und halte mich nun mit kleineren Anwendungen fit fürs programmieren.

    Aber ihr werdet es nicht glauben, ich habe auch eine Frage

    Ich möchte, dass der Cursor im Datagridview an die letzte Stelle innerhalb eine Zelle springt. Vergleichbar mit "TextBox1.SelectionStart". Eine Notlösung " SendKeys.Send("{RIGHT}")" habe ich bereits. Damit bin ich aber nicht zufrieden.


    Kann mir da jemand helfen?

    Vielen Dank im Voraus

    Gruß
    derOptimist

  • #2
    Hallo,

    ich hab eine Antwort für dich

    [highlight=vbnet]
    Private Sub personDataGridView_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs)
    Dim textBox As DataGridViewTextBoxEditingControl = TryCast(e.Control, DataGridViewTextBoxEditingControl)
    If textBox Is Nothing Then
    Return
    End If
    textBox.SelectionStart = textBox.TextLength - 1
    End Sub
    [/highlight]

    Wenns wiederverwendbar sein sollte dann erstell ein eigenen DataGridView indem du vom vorhandenen erbst dies implementierst.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Hallo gfoidl,

      danke für die Antwort, aber wie muss ich das in meine Anwendung bringen

      Gruß
      derOptimist

      Comment


      • #4
        Hallo,

        im Ereignishandler für das EditingControlShowing-Ereignis des entsprechenden DataGridViews den Code kopieren.


        mfG Gü
        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

        Comment


        • #5
          Hallo gfoidl,

          vielleicht habe ich mich unklar ausgedrückt...

          Nicht nur der Cursor muss an der letzten Stelle sein, sondern der bisherige Inhalt sollte nicht mehr markiert sein, damit der Anwender direkt mit seiner Eingabe weitermachen kann.

          Bei einem Doppelklick auf eine Listbox wird folgender Code ausgeführt:



          Code:
                  dgv_main.EditMode = DataGridViewEditMode.EditProgrammatically
                  Try
                      Dim merke_wert As String = lb_Namenanzeige.SelectedItem.ToString
                      If dgv_main.RowCount = Reihenindex + 1 Then
          
                          dgv_main.Rows.Add()
          
                          Reihenindex -= 1
          
                          dgv_main.Item(Spaltenindex, Reihenindex).Value = merke_wert
          
                      Else
                          dgv_main.Item(Spaltenindex, Reihenindex).Value = merke_wert
                      End If
                  Catch ex As Exception
                      Fehlerbehandlung(ex.ToString)
                  End Try
          
                  dgv_main.BeginEdit(True)
                  dgv_main.EndEdit()
                  dgv_main.EditMode = DataGridViewEditMode.EditOnEnter

          Comment


          • #6
            Hallo,

            Nicht nur der Cursor muss an der letzten Stelle sein, sondern der bisherige Inhalt sollte nicht mehr markiert sein, damit der Anwender direkt mit seiner Eingabe weitermachen kann.
            Das macht doch mein Code (oder nicht?)

            Bei einem Doppelklick auf eine Listbox
            Welche Listbox? Im Titel steht DataGridView.


            mfG Gü
            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

            Comment


            • #7
              Der Anwender klickt auf eine Listbox, dann wird in eine Reihe des Datagridviews (dgv_main) ein Text eingefügt.
              Nach dem Anklicken in der Textbox soll der Anwender direkt im Datagridview weiterschreiben können.

              Das mit dem Code funzt leider so noch nicht. Ausgeführt wird wohl der Code, der Cursor steht auch am Ende der Zelle des Datagridview. Aber der Text innerhalb der Zelle ist komplett markiert. Somit würde alles gelöscht werden wenn der Anwender anfängt zu schreiben.

              Comment


              • #8
                Hallo,

                Der Anwender klickt auf eine Listbox, dann wird in eine Reihe des Datagridviews (dgv_main) ein Text eingefügt.
                Nach dem Anklicken in der Textbox soll der Anwender direkt im Datagridview weiterschreiben können.
                Es wäre praktsich wenn wir dieselben Benennungen verwenden. Was ist eine Reihe im DataGridView (DGV)? Das DGV hat Zeilen und Spalten. Halte dich bitte daran.

                Es geht um
                Ich möchte, dass der Cursor im Datagridview an die letzte Stelle innerhalb eine Zelle springt
                Mein Code ist der Ausgangspunkt und den Rest musst du selbst machen V.a. da du geschrieben hast
                Vergleichbar mit "TextBox1.SelectionStart".
                Somit gehe ich davon dass du weißt wie es bei einer Textbox funktioniert. Wo ist dann der Unterschied zu der Textbox im DGV und eine anderen? Nirgends. D.h. aber auch dass mein obiger Code nicht 1:1 per Copy&Paste übernommen werden soll/kann, sondern ggf. anpegasst werden muss. Daran sollte es wohl nicht scheitern. Etwas mehr Optimismus bitte


                mfG Gü
                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                Comment


                • #9
                  Hi Gü,

                  danke für deine Unterstützung!

                  Ich habe jetzt eine Lösung gefunden, mit der ich leben kann.
                  Zwar nicht ganz so wie gewollt, aber es erfüllt auf jeden Fall seinen Zweck

                  [highlight=vbnet]
                  Private Sub MyGrid_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles Me.EditingControlShowing
                  Try
                  DataGridView_EditingControlShowing(sender, e)
                  Catch ex As Exception

                  End Try
                  End Sub

                  Private Sub DataGridView_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs)
                  Try
                  Dim textBox As DataGridViewTextBoxEditingControl = TryCast(e.Control, DataGridViewTextBoxEditingControl)
                  If textBox Is Nothing Or textBox.Text = "" Then
                  Exit Sub
                  End If
                  SendKeys.Send("{RIGHT}")
                  Catch ex As Exception

                  End Try
                  End Sub
                  [/highlight]

                  Comment


                  • #10
                    Hallo,

                    was hast du oben an
                    im Ereignishandler für das EditingControlShowing-Ereignis des entsprechenden DataGridViews den Code kopieren.
                    nicht verstanden?

                    Die Methode "MyGrid_EditingControlShowing" ist hyperliquid


                    mfG Gü
                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

                    Comment


                    • #11
                      Tja manche Leute wollen sich einfach nicht helfen lassen

                      Comment

                      Working...
                      X