我试着改变DataGridView
中的细胞颜色。
我对datagridview有点新意见,并且已经查看过这里发布的许多问题,但似乎没有一个对我有用。
请不要标记为副本。
我的最后一次迭代(仍然不起作用)是:
DataGridView1.AutoGenerateColumns = true;
DataGridView1.AutoSize = true;
DataGridView1.DataSource = DT;
int rowIndex = 0;
int cellIndex = 0;
Color c = Color.Gray;
foreach(var row in DataGridView1.Rows.Cast<DataGridViewRow>().ToList())//.ForEach(row =>
{
var cells = row.Cells;
if (cells.Count > 0) {
cellIndex = 0;
foreach (DataGridViewCell cell in cells)
{
DataGridView1.Rows[rowIndex].Cells[cellIndex].Style.BackColor = c;
//cell.Style.BackColor = c;
cellIndex++;
}
if (cells[0].Value!= null)
if ((cells[0].Value as string ).Contains("==="))/*end of section*/
{
c = (c == Color.Gray) ? Color.Transparent : Color.Gray;/*change color at end of section*/
}
}
rowIndex++;
}
rowIndex = 0;
我的代码有什么问题? 是否需要在True \ False上设置任何参数才能使颜色发生变化?
修改
我做了什么:我想打开只有DataGridView
所有数据的新表单,所有其他用途都是上下文菜单(MouseButtons.Right
)
更多代码
public partial class ResultsDiffForm : Form
{
public ResultsDiffForm(DataTable DT)//consatructor
{
InitializeComponent();
/*Old code goes here ... */
}
}
应该更清楚我在做什么
答案 0 :(得分:1)
您没有发布调用此代码的位置,但是当您尝试在窗体的构造函数中设置单元格属性时,WinForms中的DataGridView控件很有用。
请尝试使用OnLoad覆盖:
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
// your DataGridView code here...
}
答案 1 :(得分:0)
像这样:
DataGridview1.Columns[index].DefaultCellStyle.BackColor = Color.Gray;
答案 2 :(得分:0)
你可以这样尝试
if (cells[0].Value!= null)
if ((cells[0].Value as string ).Contains("==="))/*end of section*/
{
if(c == Color.Gray)
{
c = Color.Transparent;
}
else
{
c = Color.Gray;
}
}
答案 3 :(得分:0)
int rowIndex = 0;
int cellIndex = 0;
Color c = Color.Gray;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
var cells = row.Cells;
if (cells.Count > 0)
{
cellIndex = 0;
foreach (DataGridViewCell cell in cells)
{
dataGridView1.Rows[rowIndex].Cells[cellIndex].Style.BackColor = c;
cellIndex++;
}
if (cells[0].Value != null)
if ((cells[0].Value as string).Contains("==="))
{
c = ((c == Color.Gray) ? Color.Transparent : Color.Gray);
}
}
rowIndex++;
}
rowIndex = 0;