Announcement

Collapse
No announcement yet.

Zeilenfarbe im dbGrid

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

  • Zeilenfarbe im dbGrid

    Hallo,
    ich möchte die Farbe der aktuellen Zeile in einem dbGrid ändern,
    habe aber keine Möglichkeit gefunden, dies per Voreinstellung zu
    bewerkstelligen. Wäre für einen Tipp, wie man das hinbekommt
    sehr dankbar.
    Danke und Gruß

  • #2
    Hallo,

    ..ich möchte die Farbe der aktuellen Zeile in einem dbGrid ändern...
    Was ist mit "dbGrid" gemeint? Der Implementierungsweg für das DataGrid (ab .NET 1.0) unterscheidet sich vom DataGridView (ab .NET 2.0).

    Comment


    • #3
      Originally posted by Andreas Kosch View Post
      Hallo,



      Was ist mit "dbGrid" gemeint? Der Implementierungsweg für das DataGrid (ab .NET 1.0) unterscheidet sich vom DataGridView (ab .NET 2.0).
      Sorry wegen meiner Nachlässigkeit. Ich meine das DataGridView.
      Gruß

      Comment


      • #4
        Hallo,

        über DataGridViewSelectionMode-Enumeration kannst Du mit FullRowSelect die ganze Zeile markieren.

        Detaillierte Steuerung ist so möglich: Mit DataGridView.CurrentRow bekommst Du die aktuelle Zeile. Über die DataGridViewCellStyle-Klasse kannst Du die Darstellung beeinflussen (z.B. die Hintergrundfarbe) und diese Darstellung über die DataGridViewRow.DefaultCellStyle-Eigenschaft zuordnen. Ich habe es allerdings selbst noch nicht gemacht; ich weiß also nicht, welche "Nebenwirkungen" zu beachten sind.

        Ich hoffe, ich konnte helfen. Jürgen

        Comment


        • #5
          Originally posted by Jürgen Thomas View Post
          Ich hoffe, ich konnte helfen. Jürgen
          Hi, ein Stückchen schon, aber so ganz kriege ich es nicht hin.
          Wenn ich RowEnter benutze und
          dataGridView1.CurrentRow.DefaultCellStyle.BackColo r = Color.Silver;
          einfüge bzw. unter RowLeave
          dataGridView1.CurrentRow.DefaultCellStyle.BackColo r = Color.White;
          dann erhalte ich ein eigenartiges aber nicht das gewünschte Ergebnis.
          Gruß

          Comment


          • #6
            Hallo,

            ich möchte die Farbe der aktuellen Zeile in einem DataGrivVie ändern..
            im Gegensatz zum Vorgänger DataGrid stellt das DataGridView eine Unmenge von Ereignissen zur Verfügung. Um den Zeilenhintergrund einfärben, kann zum Beispiel das Ereignis CellFormatting verwendet werden:

            Code:
            private void testTblDataGridView_CellFormatting(object sender, 
                 DataGridViewCellFormattingEventArgs e)
            {
                    DataGridViewRow aRow = testTblDataGridView.Rows[e.RowIndex];
                    if ((aRow.Cells[3].Value == System.DBNull.Value) || (aRow.Cells[3].Value == null))
                    {
                        e.CellStyle.BackColor = Color.LightGray;
                    }
                    else
                    {
                        if ((int)aRow.Cells[3].Value > 0)
                            e.CellStyle.BackColor = Color.White;
                        else
                            e.CellStyle.BackColor = Color.LightGray;
                    }
            }

            Comment


            • #7
              Hallo Herr Kosch,

              vielen Dank für Ihre Antwort bzw. Ihr Code-Beispiel. Leider habe ich es nicht verstanden. Z.B. die Zeile if((int)aRow.Cells[3].Value > 0). In der von mir verwendeten Tabelle stehen in aRows.Cells[3].Value Werte wie "Zähler 3" oder "Geld zur Kasse". Da mahnt der Compiler mich dafür zu sorgen, dass die Werte auch nach int gecastet werden können. (sinngemäß)
              Wenn es die Zeit erlaubt, könnten Sie Ihr Beispiel mit einem Kommentar versehen?
              Trotzdem hat mich Ihr Beispiel zum Ziel geführt. Und zwar wie folgt:

              Code:
              		DataGridViewRow aRow = null;
              
              		private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) {
              			if(dataGridView1.CurrentRow != null) {
              				aRow = dataGridView1.Rows[e.RowIndex];
              				aRow.DefaultCellStyle.BackColor = Color.LightGray;
              			}
              		}
              		private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e) {
              			aRow.DefaultCellStyle.BackColor = Color.White;
              		}
              Liefert genau das Verhalten, welches ich mir vorgestellt habe.
              Oder gibt es dazu Einwände, warum man es so doch nicht machen sollte?
              Danke und Gruß

              Comment

              Working...
              X