繁体   English   中英

如何防止在窗体加载时选择datagridview单元格

[英]how to prevent datagridview cell selection at form load

如何为此在表格加载时未选择的数据网格视图单元格

我已经尝试了太多

我的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();         
   }

任何人都可以帮上忙..

非常感谢...

尝试创建一个新的事件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;
        }
    }

我发现按照Form.OnShown() 的答案中的建议重写Form.OnShown()确实可以达到我的目的。 但是,我发现利用DataGridView.ClearSelection()可以实现更精简的解决方案:

protected override void OnShown(EventArgs e)
{
    this.dataGridView1.ClearSelection();
    base.OnShown(e);
}

关于对base.OnShown()的调用,Microsoft在其文档中建议:

给继承者的说明

在派生类中重写OnShown时,请确保调用基类的OnShown方法,以便已注册的委托接收事件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM