C# Datagridview滚动条的问题 2C

写了个小的程序,基本上是:
1、注册键盘中的‘↑’触发关闭Form窗口;

  Win32.RegisterHotKey(handle, (int)HotKeyID.CloseForm, (uint)KeyModifiers.None, Keys.Up);

2、在Form中拦截该消息

 protected override void WndProc(ref System.Windows.Forms.Message e)
        {
            if(e.Msg == 0x0312)
            {
                            if((LockHotKey.HotKeyID)m.WParam == HotKeyID.CloseForm)
                                {
                                            this.Close();
                                }
            }
            base.WndProc(ref e);  
        }

3、运行程序,在Form中用鼠标按住Datagridview上的滚动条,同时按下键盘上的‘↑’,这时就会弹出错误
图片说明

2个回答

无法访问已释放的对象,,,是不是有什么”东东“在你不注意的情况下,不小心关了

chenqixia
蓝少飞 就是按住滚动条的同时,关闭Form,这个时候Datagridview被释放了,可是又不知道在什么地方处理这个消息
3 年多之前 回复

你是想要在按住dgv滚动条的同时如果按了键盘的↑键 就关闭这个窗口???

chenqixia
蓝少飞 或者不关闭也行,但是怎么知道当前鼠标正在按住dgv的滚动条呢
3 年多之前 回复
chenqixia
蓝少飞 是的,现在是窗口关闭后会报错
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c# dataGridView滚动条 自动滚动的效果
[code=csharp]rnfor (int i = 0; i < dataGridView1.Rows.Count; i++)rn rn dataGridView1.Rows[i].Selected = true;rn //本行颜色变为红色rn dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Red;rn dataGridView1.FirstDisplayedScrollingRowIndex = i;rn System.Threading.Thread.Sleep(1000);rn //让本行再次恢复颜色rn dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Black;rn rn[/code]rnrn自动向下滚动是实现了,但是dataGridView界面出现白屏,请教下怎么解决
C# DataGridView出现滚动条显示问题
我现在有一些数据,条数不定,我现在要做的就是不管窗体显示多大,根据窗体的大小,判断DataGridView是否出现滚动条,rn如果出现滚动条,就把剩下的数据显示在另一个DataGridView中,以此类推 具体实现怎么实现,
C#中Datagridview滚动条和数据的问题
我使用Datagridview显示数据时,例如有121条数据,但是只有27条能够看到,右侧的滚动条不能继续往下滚动,但是用光标上下键可以看下面不能显示的数据,但是滚动条不滚动。rn各位大侠,能不能帮我解决下,我使用滚动条查看数据。光标太麻烦了,
Datagridview中的滚动条问题
各位,我遇到的问题是:rn每隔一秒添加一个数据行到Datagridview中显示。当显示数据较多,超过一页Datagridview时,则出现滚动条。rn但是,滚动条总是处于最上方,拉下来又上去,无法查看后出现的数据。rn当数据刷新时,其滚动条总是弹到最上一行开始。即当前选中行总是为第一行。rn所以在查看最后几条数据时,还未看完,定时器工作,将行定位到最上。很是不爽。rn如何实现其滚动条的定位而不受定时器的影响呢??? rnrn谢谢!
datagridview的滚动条显示问题
现在我就是有一个新增界面,我每次新增一条数据,都会把数据加入到表的末尾,可是这个滚动条却一直在最上面;rn[img=http://hi.csdn.net/attachment/201108/22/10024104_1313993858d8rK.png][/img]rn我现在想知道怎么把滚动条搞到最后;正常情况应该是这样:rn[img=http://hi.csdn.net/attachment/201108/22/10024104_1313993858aA9w.png][/img]
关于DataGridView滚动条的问题
我为什么把DataGridView的属性ScrollBars 的值设置成both,但是水平的滚动条怎么也不出现呀!!rnrn为什么~~
datagridview的滚动条问题
现在有总数据100条,窗口能显示10条,所以读入10条数据,但是这时没有滚动条。rn1.如何设置能让滚动条好像是100条中显示了10条的样子?就是说怎么设置滚动条的总行数之类的?rn2.大型文本(100M以上),如何获取总行数?rn[code=C#]rn while (!sr.EndOfStream)rnrn sr.ReadLine();rn i++;rn rn[/code]rn这种样子的会比读取整个文件来的快么?rn有更快的方法么?谢谢大家~
请教:DataGridView的滚动条问题
在panel中依次增加了两个label和一个datagridview控件,panel的AutoScroll=True;为什么每次进去后,都要先点击datagridview后,鼠标滚轮才能对滚动条操作。并且,点击datagridview后,滚动条都会自动下拉到选中的那个单元格,这导致datagridview上面的两个label看不见,(因为滚动条下拉了)。请问各位,能否不让datagridview的滚动条随意滚动。或者有没有其他好的替代办法。谢谢了。
DataGridView滚动条重置的问题
没有对DataGridView滚动条进行设置,初始状态滚动条显示正确。rnrn但是当对DataGridView中添加一条数据后,滚动条现实错误。只能拖到DataGridView第十行左右。rnrn请问有没有什么方法使DataGridView滚动条可以重置,或者是可以拖到DataGridView的最后一行?
DataGridView滚动条的问题?
目前有1万条数据,在拖动垂直滚动条的时候,单元格有点闪动,是不是数据在刷新啊,有什么办法在拖垂直滚动条的时候不让刷新数据,不然看起来很晃眼。。。。求教!
DataGridView 滚动条问题
如何判断DataGridView的垂直滚动条,滚动至底部了?
datagridview滚动条的问题
因为现在我用的的17寸的4:3显示器,所以程序设计的时候为了方便就在load事件中rn Me.WindowState = FormWindowState.Maximizedrn DataGridView1.Height = Me.Heightrn DataGridView1.Width = Me.Widthrn开始就最大化,但是现在有个问题就是DataGridView滚动条没有了,设置它的ScrollBars也是没有用!rn请问如何可以让它显示出来?
datagridview 滚动条
datagridview 滚动条的平滑效果怎么设置呢???
DataGridView滚动条
怎么设置使datagridview的横向滚动条滚动的时候,前面几列不动,只滚动后面多列
datagridview 滚动条问题与绑定问题!!
我在winform添加一个datagridview,通过下列代码进行绑定。rnScroll选择为bothrn在窗体显示后,竖滚动条没有反映。水平滚动条可以作用。请问如何解决竖滚动条没有反映的问题?rnrn另外能否通过dataset来绑定dataGridView?rnrn[code=C#] rn ……rn conn.Open();rn SqlCommand comm = new SqlCommand();rn comm.CommandText = "Select top 500 voicefile FROM GSMVoiceInfo WHERE (tPhone = '14444440') AND (LEN(VoiceFileName) > 0)";rn comm.CommandTimeout = 300;rn comm.Connection = conn;rnrn SqlDataReader dr;rn dr = comm.ExecuteReader();rn int i = 0;rn while (dr.Read())rn rn //i++;rn this.dataGridView1.Rows.Add(new ListViewItem(dr.GetString(dr.GetOrdinal("voicefile "))));rn rn conn.Close();rn[/code] rnrn
关于datagridview里滚动条的问题
数据较多时,我让它显示出滚动条,在gridview的右边会有一小段滚动条的列,如果数据不够多,不用下拉时,滚动条不会出现,但是放滚动条的那列还在,空白的一列,怎么去掉啊???????????????????
求教一个datagridview滚动条的问题
我做一个程序,是捕捉网络数据包的,rnrn使用的是异步捕捉方法:rn[code=csharp] mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,rn new AsyncCallback(OnReceive), null);[/code]rnrn然后在窗口上用一个datagridview显示捕捉到的数据,在回调函数中,将捕捉到的数据添加到datagridview的数据源上,以达到显示的目的rnrn现在有一个问题是,当数据多了以后,垂直滚动条不会自动出现,我试过.Invalidate 和.Refresh方法,都不行,请问如何才能让滚动条自动出现,如果将窗口最大化,滚动条是可以出现的。rnrnrn另外还有一个问题,如果在回调函数OnReceive中操作form上的控件,比如:dataGridView1.Refresh();会提示错误:“线程间操作无效,不是从创建控件datagridview1的线程上访问他”,这样要刷新就得用委托,rn滚动条不能出现会不会和 是在 回调函数中修改datagridview的数据源有关。rnrn更奇怪的是我写的另外一个程序,异步使用ping测试:rn[code=csharp]rnpingSender.PingCompleted += new PingCompletedEventHandler(PingCompletedCallback);rnpingSender.SendAsync(ipAddress);rn[/code]rnrn在这个回调函数PingCompletedCallback中,却能操作form上的控件,比如richTextBox1.AppendText(str);rn为什么同样是异步函数,一个可以操作主程序上的控件,另外一个不可以,请大侠帮忙看看
datagridview滚动条残影问题
在用datagridview控件时发现了一个问题rn在控件拖到屏幕边缘的时候,拖动滚动条,数据会出现残影rn[img=https://img-bbs.csdn.net/upload/201409/19/1411123382_254068.png][/img]rn请高人帮忙解答下rn
datagridview获得焦点的滚动条问题
datagridview获得焦点后,就会默认到第一行,装载它的容器的滚动条就会滚动,rn有没什么办法解决?datagridview1.selectionclear(),datagridview1.Rows[0].selected = false,rn这些方法都用过,均不行。
C# 中如何将dataGridView得滚动条拉到最后
C# 中如何将dataGridView得滚动条拉到最后
DataGridView 滚动条定位
我在一个 Timer_Tick 事件里每秒刷新一次 绑定一个DATATABLE 但每绑定一次DataGridView 的滚动条都会回到最上面 怎么能让DataGridView 在重新绑定的时候滚动条的位置不动? 谢谢@
DataGridView固定滚动条
扩展一个DataGridViewExt类,实现重新绑定数据实现刷新DataGridView内容时滚动条不跳到DataGridView顶端的效果
设置DataGridView滚动条的位置
我想实现点击一个按钮让DataGridView滚动条自动滚动的效果(控制滚动条显示的位置),请问该如何实现.rn我写的如下代码实现不了,请问该怎么写?rnrnSystem.Drawing.Point pt = new Point(this.dgvMain.AutoScrollOffset.X + 10, this.dgvMain.AutoScrollOffset.Y + 100);rnthis.dgvMain.AutoScrollOffset = pt;
线程 DataGridView 滚动条假死
我开了一个线程用来动态给DataGridView添加数据...为什么当出现滚动条时...滚动条会死在那里没反应?rn我查了论坛里以前的那些帖子...有看到一片帖子..但还是没有解决问题.rn有没有哪位朋友碰到过?
datagridview 滚动条位置设置
编辑前 _iScrollY = dgv.CurrentCell.RowIndex; 编辑后  if (_iScrollY
winform datagridview 滚动条定位
datagridview中的数据是定时刷新的,表中有很多数据,所以有滚动条。rn刷新后怎么选中之前单击的行,并且滚动条的位置不改变?????
datagridview滚动条跟动
在dataGridView中有checkbox字段,现在完成插入数据库工作,插完一条那这条记录上自动勾选。现在以上功能都已实现,现在想实现滚动条随着勾选而滚动(即:画面总是介于勾选与未勾选之间)
DataGridView滚动条定位
在DataGridView中存在100多行数据,有一定时器定期对其进行刷新。刷新过程为先清空DataGridView后用其Add方法将字符串数组加入其中。问题是当数据刷新时,其滚动条总是弹到最上一行开始。即当前选中行总是为第一行。因为定时器刷新较快(5秒),所以在查看最后几条数据时,还未看完,定时器工作,将行定位到最上。很是不爽。如何实现其滚动条的定位而不受定时器的影响呢???
急急急!在线等!C# WinForm下的DataGridView滚动条消失的问题!
很奇怪啊,我从数据库查询到数据以后,在形成的DataTable上又添加了一个自定义列,最后绑定到DataGridView上显示!rn可是,只要我把自定义列添加到DataTable上以后,我的水平滚动条就不显示了,如果我不执行添加列那条语句,水平滚动条就会自动出来!很奇怪啊!大家知道这是为什么吗?帮帮我,在线等!
用了线程datagridview后,datagridview的滚动条没有了
VS2005-2008在线程中是不可以有控件,所以我把加了 Control.CheckForIllegalCrossThreadCalls = false;rn但是数据查询出来后邦定到datagridview中后,滚动条就没有了,这是怎么回事。
C# DataGridView的排序问题
首先声明,我的DataGridView没有连上数据库,只是作为一个表显示输入输出。rnrn这个问题是关于DataGridView的列排序。对于一列, 我有三个数值:1,5,10rn点击列标题排序后,结果为:1,10,5(升序)或是5, 10, 1(降序)rn但我现在不想按照字典序进行排序,而是按照数字大小排序,即排序结果为1,5,10rnrn这个应该怎么办到呢?还望大牛多多指点!rn
C# datagridview 问题
请问 rn rn Form1 rn private void button1_Click(object sender, EventArgs e)rn rn Form1 f1 = new Form1();rn f1.ShowDialog();rn cla = f1.CLA;rn rn dcop();rn rnrn private void dcop()rn rnrn for (int i = 0; i < cla.Count; i++)rn rn dataGridView1.Rows.Add();rn dataGridView1.Rows[i].Cells[0].Value = cla[i].商品类型;rn dataGridView1.Rows[i].Cells[1].Value = cla[i].商品编码;rn dataGridView1.Rows[i].Cells[2].Value = cla[i].商品名称;rn dataGridView1.Rows[i].Cells[3].Value = cla[i].规格型号;rn dataGridView1.Rows[i].Cells[4].Value = cla[i].单位;rn dataGridView1.Rows[i].Cells[5].Value = cla[i].价格;rn dataGridView1.Rows[i].Cells[6].Value = cla[i].数量;rn dataGridView1.Rows[i].Cells[7].Value = cla[i].价格;rnrn rnrn rnrnrn Form2 rn public List CLA get return cla; set cla = value; rn private void button1_Click(object sender, EventArgs e)rn rn cla = new List();rnrn for (int i = 0; i < dataGridView2.Rows.Count; i++)rn rn if ((bool)dataGridView2.Rows[i].Cells[0].EditedFormattedValue == true)rn rn DallClass1 dc = new DallClass1();rn dc.商品类型 = dataGridView2.Rows[i].Cells[2].Value.ToString();rn dc.商品编码 = dataGridView2.Rows[i].Cells[3].Value.ToString();rn rn dc.商品名称 = dataGridView2.Rows[i].Cells[4].Value.ToString();rn dc.规格型号 = dataGridView2.Rows[i].Cells[5].Value.ToString();rnrn dc.单位 = dataGridView2.Rows[i].Cells[6].Value.ToString();rn dc.价格 = dataGridView2.Rows[i].Cells[7].Value.ToString();rn CLA.Add(dc);rn rn rn this.Close();rn rnrn rn 为什么Form1第二次接收Form2传的值会把Form2第一次传的值给覆盖了
C# datagridview数据绑定问题
我在winform里加了一个datagridview控件,然后设计了该dg的columns的表头,分别为:井号,顶深(m),底深(m),外径(mm)。然后我从一个表"钻具组合"里读到了这些数据,想把他们绑定到这个datagridview里已经设计好表头的那些列里面。rn该怎么弄?rn 我的代码写的是:rn string zjstr = "select * from 钻具组合 where 井号= " + "'" + jichushuju.jinghao + "'" + " order by 底深";rn OleDbConnection myconn1 = new OleDbConnection();rn myconn1.ConnectionString = "Provider = Microsoft.Jet.OleDb.4.0;Data Source=shuili.mdb";rn OleDbCommand zjcomd = new OleDbCommand(zjstr, myconn1);rn zjzhdataSet.Clear();rn myconn1.Open();rn OleDbDataReader myreader1 = zjcomd.ExecuteReader();rn while (myreader1.Read())rn rn OleDbDataAdapter myadapter = new OleDbDataAdapter(zjstr, myconn1);rn myadapter.Fill(zjzhdataSet, "钻具组合");rn dataGridView1.DataSource = zjzhdataSet .Tables ["钻具组合"]; rn rn rn myconn1.Close();rn这样运行出来的效果是,数据读出来了,也绑定到datagridview里了,但是不在绑定在我设计好表头的那些列里面,而是在后面重新加了几列来显示这些数据。rn 我想知道,如果想要把从表里读出的数据,就显示在我设计好列名的列里面,代码该如何弄,或者说可行吗?
C# DataGridView 操作问题
请问下,DataGridView的SelectionMode在RowHeaderSelect模式下,双击列头时,使得被双击列头的列被整列选中呢?rnrn(PS:我想实现的功能是在DataGridView中只能容许指定的列被整列复制,不是指定的列只能复制单个cell中的内容)
c# winform datagridview 问题
在datagridview中 第一列combobox绑定到了数据库上的货品编号,我想要实现当第一列货品编号改变的时候,后面的其他列比如规格、型号、单价和供应商之类的信息自动填充,这个应该写在datagriview的哪个事件里面,求指导,最好有代码
C# datagridview 自动更新的问题?
这是我的代码,我想实现在datagridview编辑数据时能自动保存新增和已修改的数据到数据库,我用的是CurrentCellChanged事件。但这个代码一启动就报错!说是this.dataGridView1.CurrentRow为NULL,于是我在绑定数据前取消事件绑定,但还是不起作用!!!有没有什么好的办法?rnrn[code=csharp]rnrn public partial class CPModel : Formrn rn private DataSet myDS;rn private OleDbConnection conn=null;rn private OleDbDataAdapter da = null;rnrn private void binddata()rn rn conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0.;Data Source=F:/CPDB.mdb");rn conn.Open();rn string sql = "select * from OriginData";rn da = new OleDbDataAdapter(sql, conn);rn myDS = new DataSet();rn da.Fill(myDS,"OD");rn this.dataGridView1.CurrentCellChanged -= new EventHandler(dataGridView1_CurrentCellChanged);rn this.dataGridView1.DataSource = myDS.Tables["OD"].DefaultView;rn this.dataGridView1.CurrentCellChanged += new EventHandler(dataGridView1_CurrentCellChanged);rn this.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;rn this.dataGridView1.RowHeadersVisible = false;rn rn public CPModel()rn rn InitializeComponent();rn binddata();rn rn rnrn private void dataGridView1_CurrentCellChanged(object sender, EventArgs e)rn rn if (this.dataGridView1.CurrentRow.IsNewRow)rn rn da.InsertCommand = conn.CreateCommand();rn da.InsertCommand.CommandText = "insert into OriginData values(@Phases,@SpCode)";rn da.InsertCommand.Parameters.Add("@Phases", OleDbType.VarChar, 10, "Phases");rn da.InsertCommand.Parameters.Add("@SpCode", OleDbType.VarChar, 10, "SpCode");rn int count = da.Update(myDS, "OD");rn bool result = count > 0 ? true : false;rn rn elsern rn OleDbParameter sp = new OleDbParameter();rn da.UpdateCommand = conn.CreateCommand();rn da.UpdateCommand.CommandText = "update OriginData set Phases=@Phases,SpCode=@SpCode where Phases=@oldid";rn da.UpdateCommand.Parameters.Add("@Phases", OleDbType.VarChar, 10, "Phases");rn da.UpdateCommand.Parameters.Add("@SpCode", OleDbType.VarChar, 10, "SpCode");rn sp = da.UpdateCommand.Parameters.Add("@oldid", OleDbType.VarChar, 10, "Phases");rn sp.SourceVersion = DataRowVersion.Original;rn int count = da.Update(myDS, "OD");rn bool result = count > 0 ? true : false;rn rn rnrnrn rnrnrn[/code]
C#中datagridview的问题
if (this.radioButton1.Checked == true)rn if (this.radioButton7.Checked == true)rn myCommand = new SqlCommand("select zkh,zwh,fxm,cj1 from ywcj where substring(zwh,5,3)=@kch order by zwh ", con1.conn);[color=#FF0000]根据条件的不同选择不同的字段[/color] this.Text = "语文成绩第一遍录入"; else rn myCommand = new SqlCommand("select zkh,zwh,fxm,cj2 from ywcj where substring(zwh,5,3)=@kch order by zwh ", con1.conn); this.Text = "语文成绩第二遍录入"; rnmyCommand.Parameters.Add("@kch",kch); con1.conn.Open();con1.SDA = new SqlDataAdapter(myCommand);rn dsCustomers.Clear(); con1.sda.Fill(dsCustomers); dataGridView1.DataSource = "";rn dataGridView1.DataSource = dsCustomers.Tables[0];rn[color=#FF0000]以上程序运行的时候第一次只有cj1(或cj2)一个字段,第二次必定有一个空的cj2(或cj1)字段,感觉就是datagridview还记住了上次的选择rn在另一个字程序里我的关闭数据库的代码如下[/color]myCommand.Dispose();rn con1.SDA.Dispose();rn con1.sda.Dispose();rn con1.conn.Dispose();rn rn con1.conn.Close();rn dataGridView1.DataSource = "";rn dsCustomers.Clear();rn textBox1.DataBindings.Clear();rn textBox2.DataBindings.Clear();rn textBox3.DataBindings.Clear();rn textBox4.DataBindings.Clear();rn textBox5.DataBindings.Clear();
c# DataGridView问题
我想在DataGridView 中的一个单元格子里加个日期控件rnrn在原来的2003的DataGrid里,声明一个DataGridTextBoxColumn d = new DataGridTextBoxColumn();rn然后用 d.TextBox.Controls.Add(日期控件);这个方法就可以把日期控件弄进去了,rnrn但是问题来了,在DataGridView中的DataGridViewTextBoxColume 的类中,没有TextBox这个东西,怎么弄呢?rn大家帮下我,最好代码能稍微详细点,呵呵,刚用2008,不习惯。
C# dataGridView 删除的问题
private void button2_Click(object sender, EventArgs e)rn rn DataSet ds=new DataSet();rn if (dataGridView1.CurrentCell != null)rn rn //string str = this.dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["specialtyid"].Value.ToString();rn string str = dataGridView1.CurrentRow.Cells[0].Value.ToString(); rn // string str=this.dataGridView1.SelectedRows[0].Cells[1].Value.ToString();rn string sql = "select specialtyname from specialtyinfo where specialtyid='" + str + "'and specialtyid not in (select distinct specialtyinfo.specialtyid from classinfo inner join specialtyinfo on classinfo.specialtyname=specialtyinfo.specialtyname)";rn OleDbCommand cmd = new OleDbCommand(sql, connection1);rn OleDbDataReader dr;rn dr = cmd.ExecuteReader();rn cmd.CommandText = sql;rn cmd.ExecuteNonQuery();rn if (!dr.Read())rn rn MessageBox.Show("删除专业'" + str+ "'失败,请先删除与专业相关的班级", "提示");rn dr.Close();rn rn elsern rn dr.Close();rn sql="delete * from specialtyinfo where specialtyname not in (select distinct specialtyname from classinfo) and specialtyid="+str;rn cmd.CommandText = sql;rn cmd.ExecuteNonQuery();rn MessageBox.Show("删除专业成功", "提示");rn rn rn rn rn这是个删除按钮,请问这里哪里错了 现在运行时dr = cmd.ExecuteReader();标准表达式中数据类型不对,是不是str语句错了啊?怎么改呢?
C# winfrom datagridview问题
[img=https://img-bbs.csdn.net/upload/201308/07/1375846293_949792.jpg][/img]rnrn打单那一列如果有值 就是跟收银一样的宽度rnrnrn我想让打单那一列没值的时候也保持跟收银那一列一样的宽度。。rn
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制