如何限制用户选择,我动态创建的GridView中只有一个复选框 [英] How do I restrict user to select only single checkbox in gridview which i created dynamically

查看:142
本文介绍了如何限制用户选择,我动态创建的GridView中只有一个复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个复选框成WinForm应用程序动态数据网格视图。

  DataGridViewCheckBoxColumn myCheckedColumn =新DataGridViewCheckBoxColumn()
                {
                    NAME =根据MyColumn
                    FalseValue = 0,
                    TrueValue = 1,
                    可见=真
                };
 

我要限制用户在同一时间只选择单个复选框。

有没有直接的财产?

  

我用Google搜索,发现这个答案,但CellContentClick事件没有得到触发的复选框动态创建的。

 私人无效mydatagridview_CellContentClick(对象发件人,DataGridViewCellEventArgs E)
        {
            如果((发件人为DataGridView中).CurrentCell是DataGridViewCheckBoxCell)
            {
                如果(Convert.ToBoolean(((发件人为DataGridView中).CurrentCell为DataGridViewCheckBoxCell).value的))
                {
                    INT currentcolumnclicked = e.ColumnIndex;
                    INT currentrowclicked = e.RowIndex;
                    的foreach(在associatinggridView.Rows的DataGridViewRow博士)
                    {
                        dr.Cells [currentcolumnclicked] .value的= FALSE;
                    }
                    associatinggridView.CurrentRow.Cells [currentrowclicked] .value的= TRUE;
                }
            }
        }
 

解决方案

在我的测试中CellContentClick提高所有单元格,无论怎样他们列创建的。

 无效mydatagridview_CellContentClick(对象发件人,DataGridViewCellEventArgs E)
{
    INT COL = yourCheckboxColumnIndex;
    对于(INT R = 0;为r mydatagridview.Rows.Count; R ++)
        如果(R = e.RowIndex和放大器;!&安培; e.ColumnIndex == COL)
            mydatagridview [COL,R]。价值= FALSE;
}
 

I have created a checkboxes into data grid view in winform application dynamically.

 DataGridViewCheckBoxColumn myCheckedColumn = new DataGridViewCheckBoxColumn()
                {
                    Name = "MyColumn",
                    FalseValue = 0,
                    TrueValue = 1,
                    Visible = true
                };

I want to restrict user to select only single checkbox at a time.

Is there any direct property?

I googled and found this answer but CellContentClick event does not get trigger as checkboxes created dynamically.

 private void mydatagridview_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if ((sender as DataGridView).CurrentCell is DataGridViewCheckBoxCell)
            {
                if (Convert.ToBoolean(((sender as DataGridView).CurrentCell as DataGridViewCheckBoxCell).Value))
                {
                    int currentcolumnclicked = e.ColumnIndex;
                    int currentrowclicked = e.RowIndex;
                    foreach (DataGridViewRow dr in associatinggridView.Rows)
                    {
                        dr.Cells[currentcolumnclicked].Value = false;
                    }
                    associatinggridView.CurrentRow.Cells[currentrowclicked].Value = true;
                }
            }
        }

解决方案

In my tests the CellContentClick is raised for all Cells, no matter how their columns are created.

void mydatagridview_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    int col = yourCheckboxColumnIndex;
    for (int r = 0; r < mydatagridview.Rows.Count; r++)
        if (r != e.RowIndex && e.ColumnIndex == col ) 
            mydatagridview[col , r].Value = false;
}

这篇关于如何限制用户选择,我动态创建的GridView中只有一个复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆