如何处理 MouseClick 事件中的 CheckBox?

Posted

技术标签:

【中文标题】如何处理 MouseClick 事件中的 CheckBox?【英文标题】:How to handle the CheckBox in MouseClick events? 【发布时间】:2014-11-29 23:57:05 【问题描述】:

我有一个问题,我希望你能帮助我..

我想在我的文本框和复选框中显示选定的数据行,但我遇到了 CheckBox 问题,并且错误无法将类型字符串隐式转换为布尔值

保存到数据库后,我将复选框设置为 true 或 false,因此它只会在我的 Datagridview 中显示 True 或 False not Checked,如果遇到这种情况,Checkbox 是选项...

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

    
        foreach (Control control in this.Controls)
        
            if (control is CheckBox)
                ((CheckBox)(control)).Checked = true;

        

        foreach (Control control in this.Controls)
        
            if (control is CheckBox)
                ((CheckBox)(control)).Checked = false;
        
    

在我的鼠标点击事件中

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)

    
        txtFam.Text = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
        txtName.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
        txtSevereheadache.Checked =dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
        txtBlurringvision.Checked = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
        txtAbdominal.Checked = dataGridView1.SelectedRows[0].Cells[4].Value.ToString();
        txtSeverevomiting.Checked = dataGridView1.SelectedRows[0].Cells[5].Value.ToString();
        txtBreathingdifficulty.Checked = dataGridView1.SelectedRows[0].Cells[6].Value.ToString();
        txtConvulsion.Checked = dataGridView1.SelectedRows[0].Cells[7].Value.ToString();
        txtEdema.Checked = dataGridView1.SelectedRows[0].Cells[8].Value.ToString();
        txtVaricosities.Checked = dataGridView1.SelectedRows[0].Cells[9].Value.ToString();
        txtFeverchills.Checked = dataGridView1.SelectedRows[0].Cells[10].Value.ToString();
        txtPain.Checked = dataGridView1.SelectedRows[0].Cells[31].Value.ToString();

【问题讨论】:

"如果它经历了这种情况,复选框是选项" - 这甚至意味着什么?如果您希望人们阅读并立即理解,请尝试更好地表述整个问题,以便他们回答。 @alterfox 例如我是一名患者,然后我经历了严重的头痛和视力模糊。所以工作人员将在保存后检查严重的头痛和视力模糊,它会在 Datagridview 中显示 True(选中)和其他错误(未选中)当我单击 Datagridview 中的数据时,我希望选中的 txtFam、txtName 和复选框将显示在我的表单中,这意味着我想从我的文本框和复选框中显示选定的行(将是检查是否为真)..但我总是得到错误,无法将类型字符串隐式转换为布尔值,我不知道这是什么意思 【参考方案1】:

您正在尝试将字符串值分配给布尔属性。例如

txtSevereheadache.Checked = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();

先用debug,看看dataGridView1.SelectedRows[0].Cells[2].Value是什么类型,大概把Value转换成bool就够了。所以:

txtSevereheadache.Checked = (bool) dataGridView1.SelectedRows[0].Cells[2].Value;

如果由于某种原因dataGridView1.SelectedRows[0].Cells[2].Value 不是bool 类型,则应使用Boolean.Parse 方法将字符串解析为布尔值。在MSDN 上查看。

所以,类似:

txtSevereheadache.Checked = Boolean.Parse(dataGridView1.SelectedRows[0].Cells[2].Value.ToString());

有关Convert.ToBoolean(string)Boolean.Parse(string) 之间的区别,请参阅this 线程。

【讨论】:

以上是关于如何处理 MouseClick 事件中的 CheckBox?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理 ReactJS 中的 `onKeyPress` 事件?

如何处理 Listview 中的单击事件?

如何处理 WPF 中的鼠标滚轮单击事件?

如何处理 Twitter Bootstrap 中的模态关闭事件?

如何处理重复事件中的 DST 和 TZ?

如何处理 Windows 应用程序中的 SecondaryTile 点击事件