如何在此
的表单加载时未选择数据网格视图单元格我已经尝试了太多
我的dgvproducts属性为(readonly = false,selection mode = CellSelect)
1)我已将此代码放在form shown
事件中,但这对我不起作用..
dgvProducts.Clearselection();
2)我已将上述代码放在databinding event
中,如下所示..
private void dgvProducts_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
//dgvProducts.ClearSelection();
((DataGridView)sender).ClearSelection();
}
它对我不起作用......
3)我已经放置了类似的代码,我在form load event
中添加了额外的行,但对我来说不起作用..
dgvProducts.ClearSelection();
dgvProducts.currentcell = null;
但这对我不起作用....
这是我的表单加载代码
private void SellEquipment_Load(object sender, EventArgs e)
{
getProductDetails();
dgvProducts.Columns[0].Visible = false;
for (int i = 0; i < dgvProducts.Columns.Count; i++)
if (dgvProducts.Columns[i] is DataGridViewImageColumn)
{
((DataGridViewImageColumn)dgvProducts.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch;
break;
}
}
这是我的getproductdetails代码
private void getProductDetails()
{
var products = from productlist in dbcontext.products
select new
{
productid = productlist.productId,
Name = productlist.Name,
Image = productlist.Image,
Description = productlist.Description,
Price = productlist.Price
};
BindingProductsource.DataSource = products;
dgvProducts.DataSource = BindingProductsource;
dgvProducts.ClearSelection();
}
任何人都可以帮忙...
非常感谢......
答案 0 :(得分:5)
尝试创建一个新事件OnShow并执行以下代码:
protected override void OnShown(EventArgs e)
{
if (this.dataGridView1.SelectedCells.Count > 0)
{
for (int i = 0; i < this.dataGridView1.SelectedCells.Count; i++)
this.dataGridView1.SelectedCells[i].Selected = false;
}
}
答案 1 :(得分:0)
我发现@Mitja Bonca在Form.OnShown()
中建议的覆盖the answer确实符合我的目的。但是,我发现利用DataGridView.ClearSelection()
可以让我实现更精简的解决方案:
protected override void OnShown(EventArgs e)
{
this.dataGridView1.ClearSelection();
base.OnShown(e);
}
关于对base.OnShown()
的调用,Microsoft在其文档中建议:
对继承者的说明
在派生类中重写OnShown时,请务必调用基类 class的OnShown方法,以便注册的代理接收事件。