【问题标题】:C# Check if any checkbox in datagridview is checkedC#检查是否选中了datagridview中的任何复选框
【发布时间】:2018-09-28 12:52:32
【问题描述】:

当我选中 dataGridView 中的复选框时,我选中的复选框会自动变为 false,因为我每秒都在刷新我的 dataGridView。我想要发生的是在选中 dataGridView 复选框时取消每秒刷新一次。

这是我的代码:

private void UpdateVisitors_Load(object sender, EventArgs e)
{
    //Realtime refresh
    refresher.Interval = (1 * 1000); // 10 secs
    refresher.Tick += new EventHandler(refresh);
    refresher.Start();
}

private void refresh(object sender, EventArgs e)
{
   refreshLocal();
}

更新 这是我用来刷新 dataGridView 的 refreshLocal 代码

 void refreshLocal()
    {
        dgvLocal.Rows.Clear();
        connection.Close();
        connection.Open();

        SqlCommand cmd = connection.CreateCommand();
        cmd.CommandText = "Select * from tbl_Registration ORDER BY [ID] DESC;";
        SqlDataAdapter adap = new SqlDataAdapter(cmd);
        DataSet ds = new DataSet();
        adap.Fill(ds);
        foreach (DataRow dr in ds.Tables[0].Rows)
        {
            myID = dr["ID"].ToString();
            category = dr["Category"].ToString();
            repname = dr["Representative"].ToString();
            if (dr["City/Province"].ToString() == "")
            {
                city = dr["Province"].ToString();
            }
            else
            {
                city = dr["City/Province"].ToString();
            }
            pax = dr["Pax"].ToString();
            male = dr["Male"].ToString();
            female = dr["Female"].ToString();
            students = dr["Students"].ToString();
            ar = dr["AR Users"].ToString();
            date = dr["Date & Time Added"].ToString();
            dgvLocal.Rows.Add(false, myID, category, repname, city, pax,students, ar, date);
        }
        connection.Close();
    }

【问题讨论】:

  • 也许将您的“数据网格停止复选框”放在数据网格之外?
  • 我不知道你在 refreshLocal 中做了什么,但是如果检查了相关记录,也许你可以在绑定之前将源数据设置为 true
  • 大部分代码都不需要。使用数据绑定,无需繁琐地填充每一行,并使用持久的 DataAdapter,您可以将其设置为实际刷新数据

标签: c#


【解决方案1】:

您需要绑定到 DataGridView 的事件 CellValueChanged 并在处理程序内,根据复选框的值停止计时器。

private void dataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
    if (dataGridView.Columns[e.ColumnIndex].Name == "MyCheckBoxCellName" && dataGridView.Columns[e.ColumnIndex].Value) {
        // Disable your Timer
        refresher.Enabled = false;
    }
}

【讨论】:

    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多