DataGridView 选择单元格改变行背景色

publicForm1(){InitializeComponent();setdgv();}publicvoidsetdgv(){DataTabledt=newDataT... public Form1()
{
InitializeComponent();
setdgv();
}

public void setdgv()
{
DataTable dt = new DataTable();
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("sex", typeof(string));
dt.Rows.Add("aa","man");
dt.Rows.Add("bb", "man");
dt.Rows.Add("cc", "man");
dt.Rows.Add("dd", "man");
dt.Rows.Add("ee", "man");
dt.Rows.Add("ff", "man");
dt.Rows.Add("gg", "man");
dt.Rows.Add("hh", "man");
dataGridView1.DataSource = dt;
}

//改变单元格背景
DataGridViewSelectedCellCollection dsc;
private void EcDataGridView_SelectionChanged(object sender, EventArgs e)
{
try
{
DataGridView dgv_c = (DataGridView)sender;
//上一次的选着
if (dsc != null)
{
for (int i = 0; i < dsc.Count; i++)
{
if (dsc[i].RowIndex >= 0)
dgv_c.Rows[dsc[i].RowIndex].DefaultCellStyle.BackColor = new Color();
}
}
//这次的选着
dsc = dgv_c.SelectedCells;
for (int i = 0; i < dgv_c.SelectedCells.Count; i++)
{
dgv_c.Rows[dgv_c.SelectedCells[i].RowIndex].DefaultCellStyle.BackColor = Color.SkyBlue;
}
}
catch (Exception) { return; }
}

自己写的代码。现在执行后全部行都变色了。请高人指点一下
展开
 我来答
Higer爱Susan
2010-04-13 · TA获得超过917个赞
知道小有建树答主
回答量:508
采纳率:0%
帮助的人:446万
展开全部
看看代码就知道了,要在Form—load里面对dsc进行赋初值
注意添加Form1_Load事件
public Form1()
{
InitializeComponent();
setdgv();

}

public void setdgv()
{
DataTable dt = new DataTable();
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("sex", typeof(string));
dt.Rows.Add("aa", "man");
dt.Rows.Add("bb", "man");
dt.Rows.Add("cc", "man");
dt.Rows.Add("dd", "man");
dt.Rows.Add("ee", "man");
dt.Rows.Add("ff", "man");
dt.Rows.Add("gg", "man");
dt.Rows.Add("hh", "man");
dataGridView1.DataSource = dt;
}

//改变单元格背景
DataGridViewSelectedCellCollection dsc;
private void EcDataGridView_SelectionChanged(object sender, EventArgs e)
{
try
{
DataGridView dgv_c = (DataGridView)sender;

//上一次的选着
if (dsc != null)
{
for (int i = 0; i < dsc.Count; i++)
{
if (dsc[i].RowIndex >= 0)
dgv_c.Rows[dsc[i].RowIndex].DefaultCellStyle.BackColor = new Color();
}
}
else
{
return;
}
//这次的选着
dsc = dgv_c.SelectedCells;
for (int i = 0; i < dgv_c.SelectedCells.Count; i++)
{
dgv_c.Rows[dgv_c.SelectedCells[i].RowIndex].DefaultCellStyle.BackColor = Color.SkyBlue;
}
}
catch (Exception) { return; }
}

private void Form1_Load(object sender, EventArgs e)
{
dsc = dataGridView1.SelectedCells;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鸢梨的小布丁
2015-11-07 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.3万
采纳率:21%
帮助的人:2212万
展开全部
设置CellClick就可以了,其实那条语句一起生效,之所以看不出来效果是因为,那一行处于选中状态,显示的是默认选择的颜色,当再点另外一行的时,就可以看出背景色已经改变了。
在代码之前添加:
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
另外 click 后,被选中的单元格,还有个 SelectionBackColor 设置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自灵栖洞浓桃艳李的桧柏
2010-04-13 · TA获得超过451个赞
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:254万
展开全部
cell不是列吗,你不是要变row吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式