2017-05-03 13 views
0

textbox2の値に基づいてデータグリッド行をハイライト表示するにはどうすればよいですか?C#Hightlight値がテキストボックス値と一致する場合のDataGrid行

最終的に一致する値が列2にある場合、対応する行のQTYフィールド(列3)は、エンドユーザーがスキャンしたQRコードごとに-1ずつ変更する必要があります。 QTY値が0になったら、行を緑色にハイライト表示する必要があります。私はforeachのセクションが、運

私のコードを書くのいくつかの異なる方法を試してみました、それは仕事を得ることができない

は以下の通りです:

private void textBox2_KeyPress(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
     iCBOMHDataGridView.DataSource = iCBOMHBindingSource; 

      string input = textBox2.Text; 
      string output = ""; 
      textBox2.Text = Regex.Replace(input, @"^\d{4}|[A-z]{2}[0-9]{5},|,|,|\d{|[0-9]{4}/....|\d{1,}\/\d{2,2}\/\d{4}|\s.........|\s|,|,|,|\d*?.$|[*?:/]\n|\r|\r\n", output); 

       foreach (DataGridViewRow row in iCBOMHDataGridView.Rows) 
       { 
       if ((string)row.Cells[2].Value == textBox2.Text) 
        { 
         row.Selected = true; 
        } 
       else 
        { 
         row.Selected = false; 
         MessageBox.Show("Part Number doesn't match"); 
        } 
       } 

     } 
    } 

答えて

0

あなたは内側のループを行うことができますその行のすべてのセルとセルを設定しますスタイルプロパティ。選択されていない行と選択されていない行に対して異なるスタイルを作成し、必要に応じてこれらのスタイルを適用することができます。

例:

DataGridViewCellStyle selectedStyle = new DataGridViewCellStyle(); 
selectedStyle.BackColor = Color.LemonChiffon; 
selectedStyle.ForeColor = Color.OrangeRed; 

DataGridViewCellStyle defaultStyle = new DataGridViewCellStyle(); 
defaultStyle.BackColor = System.Drawing.Color.White; 
defaultStyle.ForeColor = Control.DefaultForeColor; 

foreach (DataGridViewRow row in iCBOMHDataGridView.Rows) 
{ 
    if ((string)row.Cells[2].Value == textBox2.Text) 
    { 
     row.Selected = true; 

     if(Decimal.Parse(row.Cells[3].Value.ToString()) > 0) 
      row.Cells[2].Value = Decimal.Parse(row.Cells[2].Value.ToString()) - 1; 
    } 

    if (Decimal.Parse(row.Cells[3].Value.ToString()) <= 0) 
    { 
     foreach (DataGridViewCell col in row.Cells.AsParallel()) 
      col.Style = selectedStyle; 
    } 
    else 
    { 
     foreach (DataGridViewCell col in row.Cells.AsParallel()) 
      col.Style = defaultStyle; 
    } 
} 

あなたはセルをループにしたくない場合は、単純に、各行のDataRow.DefaultCellStyleプロパティを変更することができます。しかし、これによりカスタマイズオプションが制限されます。

+0

最終的に一致する値が見つかった場合、対応する行のQTYフィールドは、エンドユーザーがスキャンしたQRコードごとに-1ずつ変更する必要があります。 QTY値が0になったら、行を緑色にハイライト表示する必要があります。 –

+0

次に、QTY列がゼロであるかどうかをチェックする条件の後でのみスタイルを適用します。 * if((文字列)row.Cells [cQTY.Name] .Value <= 0)* – ShadowKras

関連する問題