Ich möchte während der Bearbeitung einen roten Rahmen um eine DataGridView
-Zelle zeichnen.
Ich habe es geschafft, einen roten Rahmen um die ausgewählte Zelle zu zeichnen, während sie nicht mit diesem Code bearbeitet wird:
%Vor%Was bewirkt dieses Ergebnis:
Wenn Sie jedoch eine Zelle bearbeiten, geschieht dies:
Es scheint so, als ob sich die EditingControl
über den größten Teil meiner roten Grenze zieht. Leider kann ich keine Möglichkeit finden, dies zu beheben, so dass mein roter Rahmen jederzeit vollständig angezeigt wird.
Wie kann ich das tun?
Folgendes habe ich bisher versucht:
1. Behandeln des Ereignisses EditingControlShowing()
, um die Datei manuell neu zu zeichnen
Grenze wie folgt:
Aber das hat nichts gezeichnet. Ich habe ein paar Varianten ausprobiert, aber alle haben hier noch nichts gezeichnet.
2. Ich habe dann versucht, das Paint()
-Ereignis von EditingControl
zu behandeln.
so:
Aber dieses Ereignis feuert nicht einmal. Ich habe später irgendwo gelesen, dass die
EditingControl
verwendet ein normales TextBox
, das nicht aktiviert wird
Paint()
-Ereignis, weil es stattdessen von Windows behandelt wird.
3. Schließlich, anstatt zu versuchen, eine andere Grenze neu zu malen, entschied ich mich dafür
Probieren Sie es aus und hacken Sie herum, indem Sie die EditingControl
ändern
kleiner als meine Grenze in der Hoffnung würde die Grenze dann herum zeigen
Es ist so:
Aber das hat mir nur dieses Ergebnis gegeben:
Also ist die TextBox
nach links gegangen, aber es scheint, dass es eine andere gibt
Kontrolle darunter, die immer noch meine rote Grenze blockiert. Ich kann jedoch nicht finden, um Zugang zu bekommen
zu dieser Kontrolle, um die Größe zu ändern, damit dies auch nicht für mich funktioniert.
4. Ich habe auch versucht, den Code aus # 1 oben zu verwenden, um den Rahmen im Ereignis Resize()
erneut zu zeichnen, aber das hat immer noch nichts bewirkt. Obwohl die Verwendung von dataGridView1.EditingControl.BackColor = Color.Red;
funktioniert hat, kann ich hier einige Teile des Steuerelements formatieren, aber es scheint, als ob der Versuch, einen Rahmen zu zeichnen, nicht einer davon ist.
Ich möchte nur einen roten Rahmen um die Zelle herum zeigen, während sie bearbeitet wird. Weißt du, wie ich das machen kann?
Es kann mit einigen Einstellungen und Malen bestimmter Teile der Zelle getan werden. Um so zu:
Setzen Sie zuerst CellBorderStyle
auf Raised
oder Sunken
im Designer oder einfach im Formular-Ladecode:
Zeichnen Sie dann Zellen mit diesen spezifischen geordneten Regeln:
Dies ist ein Screenshot des Ergebnisses, nachdem Sie
ausgewählt habenund hier ist ein Screenshot des Ergebnisses beim Bearbeiten der Zelle
und hier ist der Code des Zellfarbenereignisses:
%Vor% Der einfachste Ansatz unter Verwendung Ihres vorhandenen Codes ist die Einstellung von CellBorderStyle
auf Sunken wie folgt:
Wenn Sie Sunken nicht mögen, können Sie dies erreichen durch AdjustCellBorderStyle und DataGridViewAdvancedBorderStyle Ändern Sie im Zellfokusereignis den Zellrahmenstil. Sehen Sie sich auch Folgendes an: Gewusst wie: Anpassen von Zellen und Spalten in Windows Forms DataGridView Control durch Erweiterung ihres Verhaltens und Aussehens .
Ich hoffe, es würde dir helfen.
Tags und Links .net c# winforms datagridview