dataGridView 的 AllowUserToAddRows 问题

sinat_25186077 2016-08-29 04:46:58
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode==Keys.Delete)
{
DialogResult dr = MessageBox.Show("确定要删除本行吗", "提示");
int selectindex=dataGridView1.CurrentRow.Index;
int autoindex=dataGridView1.RowCount;
int boolindex=autoindex-selectindex;
if(dr==DialogResult.OK)
{
switch(boolindex)
{
case 1:
dataGridView1.AllowUserToAddRows = false;
break;
default :
MessageBox.Show(boolindex.ToString());
break;
}
}
}
}

我这样写以后满足 条件的时候 AllowUserToAddRows 为false ,但是主界面还是有多出的一行,但是如果我不做判断直接在if以后把他的属性改为FALSE,再主界面就没有多处的一行,这是什么原因呢
...全文
320 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 17 楼 yuankaiwsl 的回复:
你这个不是删除行,好不
- -对对,我这个不是删除行.我这是只是控制他的自增行而已..我等下再去改下 写了
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
你这个不是删除行,好不
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
应该是把新建行添加到了数据源中。换个思路吧
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 14 楼 yuankaiwsl 的回复:
我知道了,我之前是添加的行,如果是绑定就会出现这个问题。 假设数据源DataTable.Rows.Count==9,执行完你所谓的删除新建行(即dataGridView1.AllowUserToAddRows = false;)后数据源就变成了10行。
- -执行删除行 数据源还会增加?..我没测试过
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
我知道了,我之前是添加的行,如果是绑定就会出现这个问题。 假设数据源DataTable.Rows.Count==9,执行完你所谓的删除新建行(即dataGridView1.AllowUserToAddRows = false;)后数据源就变成了10行。
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 12 楼 yuankaiwsl 的回复:
不会是处理了AllowUserToAddRowsChanged吧?
没有, dataGridView1 的事件我只用了2个 一个是 dataGridView1_KeyDown 还以个是dataGridView1_CellMouseDoubleClick
 private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
        {
           int eindex = e.RowIndex;
           dataGridView1[0, eindex].ReadOnly = false;
       //    MessageBox.Show( dataGridView1.RowCount.ToString());

        }
这是我 load里面的事件
private void Form1_Load(object sender, EventArgs e)
        {
           
                this.comboBox1.DataSource = cd.ComDataScore().Tables[0];
                int width = 0;
                this.comboBox1.ValueMember = "Name";
                this.comboBox1.DisplayMember = "Name";
                this.comboBox1.AutoCompleteMode = //设置自动完成的模式
                      AutoCompleteMode.SuggestAppend;
                this.comboBox1.AutoCompleteSource = //设置自动完成字符串的源
                    AutoCompleteSource.ListItems;
             for (int i = 0; i < this.dataGridView1.Columns.Count; i++)
           {
               //将每一列都调整为自动适应模式
               this.dataGridView1.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
               //记录整个DataGridView的宽度
               width += this.dataGridView1.Columns[i].Width;
           }
           //判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
           //则将DataGridView的列自动调整模式设置为显示的列即可,
           //如果是小于原来设定的宽度,将模式改为填充。
            if (width > this.dataGridView1.Size.Width)
           {
               this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
           }
           else
           {
               this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
           }


           
             dataGridView1.Columns[0].ReadOnly = true; //字段名不允许修改
            this.label2.Text = this.comboBox1.Text;
        }
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
不会是处理了AllowUserToAddRowsChanged吧?
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 10 楼 yuankaiwsl 的回复:
我试了,用你的代码,我的可以。看看是不是别的地方影响了
恩,我也怀疑是其他地方的,因为我进入case 以后 发现 界面闪了一下,应该是刷新了,但是我还没找到是什么地方引起的
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
我试了,用你的代码,我的可以。看看是不是别的地方影响了
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 8 楼 yuankaiwsl 的回复:
你的需求是:也能删除新建行?
对的
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
你的需求是:也能删除新建行?
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 6 楼 yuankaiwsl 的回复:
直接一开始dataGridView1.AllowUserToAddRows = false;不就完了?
我要直接在 dataGridView1 进行添加和修改啊,可能会自己加值上去的,如果直接为false 了 不就是不能添加了
巴士上的邂逅 2016-08-30
  • 打赏
  • 举报
回复
直接一开始dataGridView1.AllowUserToAddRows = false;不就完了?
sinat_25186077 2016-08-30
  • 打赏
  • 举报
回复
引用 4 楼 yuankaiwsl 的回复:
引用
最后 操作多出来的一行删除掉
怎么多出来的?
设置的啊 dataGridView1.AllowUserToAddRows 本身设置的是True 我在dataGridView1 上修改的时候 当最后一个单元格上发生值改变的时候 dataGridView1会自动多一行出来
巴士上的邂逅 2016-08-29
  • 打赏
  • 举报
回复
引用
最后 操作多出来的一行删除掉
怎么多出来的?
sinat_25186077 2016-08-29
  • 打赏
  • 举报
回复
引用 2 楼 sinat_25186077 的回复:
[quote=引用 1 楼 yuankaiwsl 的回复:] 没进case 1,没看懂为什么要这样做,直接一开始dataGridView1.AllowUserToAddRows = false;不就完了?
进了 case 1 我做了断点调试, 最开始是dataGridView1.AllowUserToAddRows = true, 我是要把最后 操作多出来的一行删除掉,还有if里面判断 dataGridView1.AllowUserToAddRows = false 也不行,找不到是什么原因[/quote] 好像是 进入判断以后 界面又重写刷新了一次,这是系统本身的机制么- -
sinat_25186077 2016-08-29
  • 打赏
  • 举报
回复
引用 1 楼 yuankaiwsl 的回复:
没进case 1,没看懂为什么要这样做,直接一开始dataGridView1.AllowUserToAddRows = false;不就完了?
进了 case 1 我做了断点调试, 最开始是dataGridView1.AllowUserToAddRows = true, 我是要把最后 操作多出来的一行删除掉,还有if里面判断 dataGridView1.AllowUserToAddRows = false 也不行,找不到是什么原因
巴士上的邂逅 2016-08-29
  • 打赏
  • 举报
回复
没进case 1,没看懂为什么要这样做,直接一开始dataGridView1.AllowUserToAddRows = false;不就完了?

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧