2017-08-01 4 views
0

Ich versuche ändern aC# -Anwendung (Sammeln von Produkten durch ihre Barcodes) auf Windows CE Handheld-Gerät mit Compact Framework 3.5Wie Farbe der verschiedenen Reihen in Datagrid C# windows ce

Ich habe ein Datagrid und Datagrid ist binden zu entwickeln mit einer Datentabelle nach SQL. Es gibt 4 Spalten in meinem Datagrid, die dritte Spalte stellt die Menge der Produkte dar, die gesammelt werden müssen, und die letzte Spalte enthält den Standardwert 0 (Menge gesammelt). Immer dann, wenn Benutzer einen Produktcode eingibt, die Menge des Produkts erhöht um 1. 1

Ich mag blauer Hintergrundfarbe der Reihe machen, wenn die Benutzer entsprechenden Produktcode eingibt (um zu zeigen, welches Produkt gesammelt wird)

und auch ich möchte Hintergrundfarbe grün machen, wenn Benutzer die benötigten Produkte sammelt.

Ich habe versucht, Reihe nach ausgewählten Index färben, aber es funktioniert nicht. Wenn die Auswahl weg ist, sind die Farben verschwunden.

Hier ist ein Bild von Bildschirm, wenn benötigte Menge an Produkt gesammelt wurde. enter image description here

Hier ist, wenn ich die verarbeitete Zeile sehen möchte. enter image description here

Unten ist mein Code des Tastendruckereignisses der Textbox (Produktcode eingeben)

 private void txtUrunkod_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     foreach (System.Data.DataColumn col in dt.Columns) col.ReadOnly = false; 
     if (e.KeyChar == (char)Keys.Enter) 
     { 
      islemkod = txtUrunkod.Text; 
      islemkod.Trim(); 

      if (islemkod.Contains('/')) 
      { 
       serikodbol = islemkod.Split('/'); 
       urunKodum = serikodbol[0]; 
       DataRow row = dt.Select("urunkodu='" + urunKodum + "'").FirstOrDefault(); 
       int guncelle = Convert.ToInt32(row[3]); 
       guncelle++; 
       row[3] = guncelle; 
      } 
      else if (islemkod.Length == 8) 
      { 
       SqlCommand cmd = new SqlCommand("exec MY_TOPUK_BILGI_GETIR '" + islemkod + "'", conStr); 
       conStr.Open(); 
       SqlDataReader dr = cmd.ExecuteReader(); 
       uk = new DataTable(); 
       uk.Load(dr); 
       conStr.Close(); 
       //toplamaGrid.Select(0); 
       foreach (DataRow row2 in uk.Rows) 
       { 
        urunKodum = row2[0].ToString(); 
       } 
       DataRow row = dt.Select("urunkodu='" + urunKodum + "'").FirstOrDefault(); 
       int guncelle = Convert.ToInt32(row[3]); 
       guncelle++; 
       row[3] = guncelle; 
       int index = -1; 
       bool found = false; 

       foreach (DataRow datr in dt.Rows) 
       { 
        index++; 
        string d = datr["urunkodu"].ToString(); 
        if (datr[0].ToString() == urunKodum) 
        { 
         found = true; 
         break; 
        } 
       } 


       if (found && !row[2].Equals(row[3])) 
       { 

        toplamaGrid.Select(index); 
        toplamaGrid.SelectionBackColor = Color.Blue; 
       } 
       else if (row[2].Equals(row[3])) 
       { 
        toplamaGrid.Select(index); 
        toplamaGrid.SelectionBackColor = Color.Green; 
        //toplamaGrid.UnSelect(index); 
       } 



      } 

      else if (islemkod.Length == 7 && islemkod[0] == 'P') 
      { 

      } 

      else//islemkod.Length != 8 && !islemkod.Contains('/') 
      {// 
       urunKodum = txtUrunkod.Text; 
       txtUrunkod.Visible = false; 
       lblurunkod.Visible = false; 
       txtifAdres.Visible = true; 
       lbladressor.Visible = true; 
       txtifAdres.Focus(); 

      } 
      updated = true; 
      txtUrunkod.Text = ""; 
      sonindex = 0; 
     } 
    } 

ich viele Informationen über diese finden könnte nicht. Jede Hilfe wird wichtig sein. Danke für jede Hilfe!

+0

Doppelte von https://stackoverflow.com/questions/408113/changing-row.colors-in-the-compact-framework-datagrid?rq=1. Sie müssen benutzerdefinierte Zeichnung im Paint-Ereignis implementieren. – josef

Antwort

0

Zuallererst habe ich das gleiche Problem erlebt. Verwenden Sie DataGridFormatCellEventArgs zum Einfärben der Lösung.

explained here Fügen Sie die DataGrid-Datei zu Ihrem Code in der Verknüpfung hinzu. (DataGridFormatCellEventArgs.cs und FormattableTextBoxColumn.cs) Diese Dateien enthalten die Paint-Klasse, die für die Färbung verwendet wurde.

different example

Ich hoffe, dass ich helfen konnte. Wenn Sie Schwierigkeiten haben, kann ich ein Beispiel aus meinem eigenen Code geben.