C# 如果在C中的datagrid中选中复选框#

C# 如果在C中的datagrid中选中复选框#,c#,winforms,checkbox,C#,Winforms,Checkbox,在datagrid字段的form2上,我有一个复选框“admin”。当我从form1呼叫form2时 我希望它首先检查这个用户(已登录)是否已签入字段“admin”。 如果是,则授予用户对form2的访问权限,否则返回form1,并显示一个消息框,说明用户无权访问 检查“是否已检查”是否应在form2 load上 编辑:可以这样做: form1: call form2 function test form2: function test that checks if the cur

在datagrid字段的form2上,我有一个复选框“admin”。当我从form1呼叫form2时 我希望它首先检查这个用户(已登录)是否已签入字段“admin”。 如果是,则授予用户对form2的访问权限,否则返回form1,并显示一个消息框,说明用户无权访问

检查“是否已检查”是否应在form2 load上

编辑:可以这样做:

form1:
  call form2 function test

form2:
    function test that checks if the current user has checked the checkbox in the datagrid

从我的理解到你的要求,你可以通过多种方式做到这一点。如果用户具有管理员权限,则可以检查form2的加载事件,或者在创建form2实例之前,可以从form1执行检查并检查用户是否具有管理员权限。

有两个选项。首先,将状态从DataGrid读取到如下复选框:

CheckBox.Checked = GridView.Rows[0].Cells[Index.Of.CheckBox]
或者你应该打字:

if ((CheckBox)GridView.Rows[0].Cells[Index.Of.CheckBox]).Checked)
    DoWhatEverYouWant

否,如果执行签入加载,则可能无法阻止窗体出现

相反,将方法放在将执行检查或显示Form2的Form1上?这样,所有希望显示Form2的代码都可以从相同的检查中受益

public class Form1
{
   ...
   public void ShowAdminForm2()
   {
      if (!chkAdmin.IsChecked)
         MessageBox.Show ("Not admin");
      else
         new Form2().ShowDialog();
   }
}

简言之,应该在form2上。问题是我无法检查是否在加载时选中了复选框,因为datagrid正在同时填充。所以它应该在那之后出现,但如果这个用户(登录用户)没有管理员权限,它仍然不应该显示表单(form2)。这是我的第一个想法。在form1上有一个按钮,单击该按钮可将您指向form2。问题是,当我想比较是否为当前用户检查了admin字段时,我得到了一个错误。首先,您不能使用“if(!chkAdmin.IsChecked)”,而是必须签入datagrid;其次,datagrid位于form2上,不允许您查看它。通常,最好先解释数据库中的数据。您是否可以获取数据的规范格式,然后检查数据中的权限,而不是等待加载控件?