2017-08-01 27 views
0

我嘗試開發C#應用程序(採集產品由條形碼),以Windows CE的掌上設備與Compact Framework的3.5如何改變不同行的顏色在數據網格的C#Windows CE

我有一個DataGrid和DataGrid是綁定與數據表由SQL。我的數據網格中有4列,第3列代表需要收集的產品的數量,最後一列的默認值爲0(收集的數量)。每當用戶輸入產品代碼,產品的量由1

我想使行藍色的背景顏色,當用戶輸入相應的產品代碼(以顯示被收集,其產物)增加1

和如果用戶收集所需產品,我也想讓背景顏色變成綠色。

我試着通過選定的索引着色行,但它不起作用。當選擇消失後,顏色消失了。

以下是當需要的產品數量被收集時的屏幕圖片。 enter image description here

這是當我想看到處理的行。 enter image description here

下面是我的文本框的按鍵事件的代碼(輸入的產品代碼)

 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; 
     } 
    } 

我無法找到關於這個很多信息。任何幫助都很重要。謝謝你的幫助!

+0

複製https://stackoverflow.com/questions/408113/changing-row-colors-in-the-compact-framework-datagrid?rq=1。您需要在Paint事件中實現自定義繪圖。 – josef

回答

0

首先,我遇到了同樣的問題。使用DataGridFormatCellEventArgs爲着色解決方案。

explained here將DataGrid文件添加到鏈接中的代碼中。 (DataGridFormatCellEventArgs.cs和FormattableTextBoxColumn.cs)這些文件包含用於執行着色的Paint類。

different example

我希望我能幫上忙。如果你遇到困難,我可以從我自己的代碼中舉個例子。

相關問題