【发布时间】:2015-06-04 17:25:02
【问题描述】:
我的数据网格有以下问题。
我有一个数据网格视图,其中有几列已经着色和一个组合框。我的 datagridview 的第一列“信号名称”与组合框的值相同。
我的目标是更改与组合框中具有相同信号名称的行的颜色,并让其他行的初始颜色相同。
我已经尝试了以下代码,但在我运行它时它并没有“重置”初始颜色。相反,所需行的颜色已正确更改,但是,当我将组合框的值更改为另一个值时,它不会像应有的那样重置为通常的颜色,我最终得到了两行着色。
Public Sub ComboBox1_Selka() Handles ComboBox1.SelectedValueChanged
dgv_Sigdata.Columns("Target Profit").DefaultCellStyle.BackColor = Color.FromArgb(102, 255, 102)
dgv_Sigdata.Columns("Avg Loss").DefaultCellStyle.BackColor = Color.FromArgb(247, 197, 141)
dgv_Sigdata.Columns("Avg Win").DefaultCellStyle.BackColor = Color.FromArgb(102, 255, 102)
dgv_Sigdata.Columns("Stop Loss").DefaultCellStyle.BackColor = Color.FromArgb(247, 197, 141)
dgv_Sigdata.Columns("Target Profit").DefaultCellStyle.BackColor = Color.Beige
For Each row As DataGridViewRow In dgv_Sigdata.Rows
If row.Cells.Item(0).Value.ToString = ComboBox1.Text Then
dgv_Sigdata.Rows(row.Index).Cells("Signal Name").Style.BackColor = Color.FromArgb(10, 2, 102)
dgv_Sigdata.Rows(row.Index).DefaultCellStyle.BackColor = Color.FromArgb(10, 2, 102)
Else
dgv_Sigdata.Rows(row.Index).Cells("Signal Name").Style.BackColor = Color.White
End If
Next row
End Sub
此代码假设将所有列重置为其初始颜色,然后仅为组合框行着色。然而,事实并非如此。
感谢您的帮助!
【问题讨论】:
-
在 If...Then 行上放置一个调试中断,当代码停止时,检查这些值。您可能想要使用 ComboBox1.SelectedItem.ToString 而不是 ComboBox1.Text。顺便说一句,您可以只使用行变量:
row.Cells("Signal Name").Style.BackColor = Color.White
标签: vb.net datagridview colors