You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测DataGridView选中行变化?选中行时清除「Write」标签

问题分析与解决

你的代码没生效主要有几个原因,而且没覆盖需求里的核心逻辑,下面一步步改:

原代码的问题

  • 初始selected_row = 0,如果DataGridView默认选中的就是第0行,第一次切换到其他行才会触发逻辑,但切回第0行时就不会触发,判断逻辑有漏洞
  • 没判断CurrentRow是否为空,当点击DataGridView空白区域时,CurrentRow会是null,访问Index会直接抛出空引用异常
  • 只加了弹窗,没实现「清除Write标签」的核心操作
  • 完全没处理「未输入内容时恢复标签」的需求

修正方案

1. 修复SelectionChanged事件,实现选中行时清除标签

先确保你的DataGridView已经正确绑定了SelectionChanged事件(设计器里可以在属性面板的事件列表里确认),然后替换成下面的代码:

private void dataGridView2_SelectionChanged(object sender, EventArgs e)
{
    // 先判断是否存在选中的行,避免空引用
    if (dataGridView2.CurrentRow != null)
    {
        // 清除Write标签的文本
        labelWrite.Text = string.Empty;
    }
}

2. 添加输入控件的TextChanged事件,实现空输入时恢复标签

假设你用来输入内容的控件是TextBox(命名为textBoxInput),给它添加TextChanged事件,代码如下:

private void textBoxInput_TextChanged(object sender, EventArgs e)
{
    // 如果输入内容为空或全是空格,恢复标签的「Write」文本
    if (string.IsNullOrWhiteSpace(textBoxInput.Text))
    {
        labelWrite.Text = "Write";
    }
}

这样就能实现:选中DataGridView的行时清空标签,输入框内容为空时自动把标签改回「Write」。

内容的提问来源于stack exchange,提问作者user22822757

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:38:15