滚动条联动的问题 ,我有二个控件,分别为DataGridView 和Panel ,现在要求DataGridView 的垂直滚动条和Panel的垂直滚动条联动,
请问怎么实现啊,大家来看看啊

解决方案 »

  1.   


    int GetScrollPos(
        HWND hWnd, // handle of window with scroll bar
        int nBar  // scroll bar flags
       );
    int SetScrollPos(
        HWND hWnd, // handle of window with scroll bar
        int nBar, // scroll bar flag
        int nPos, // new position of scroll box
        BOOL bRedraw  // redraw flag
       );
      

  2.   

    有了Panel的滚动条就不要GridView的滚动条了吧,或者只要GridView的滚动条不要Panel的滚动条,为什么要设置两个滚动条呢。
      

  3.   

    用上面两个windwos API,分别是获得窗体滚动条位置,和设置指定窗体滚动条位置
      

  4.   

    不要这么复杂吧把DataGridView放在一个div里,用div的滚动条
      

  5.   

    在2个控件的Scroll事件里做文章,一旦拖动滚动条,捕获了Scroll时间,就把另一控件的滚动条的位置进行相应设置。
      

  6.   


    这位朋友误会了,  我的panel和DataGridView位置不在一起,DataGridView在左边, panel在DataGridView的右边, panel里面存放是一些其他信息
    , 现在要求二个滚动条进行联动 
      

  7.   

    用div 把gridview 围起来 ,div的style =" overfloat:auto"
      

  8.   


    不好意思,没写清楚 是winform 
      

  9.   


    不好意思,没写清楚 是winform 
      

  10.   


    额,这位大哥,是winform 咯,
      

  11.   

    增加datagridview1 的scroll事件,实现对datagridview2的滚动条联动.代码如下:
     private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
            {
                if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
                {                
                    int a = e.OldValue;
                    int b = e.NewValue;               
                    dataGridView2.FirstDisplayedScrollingRowIndex = b;                               
                }
            }另外需要:增加"向上""向下"键盘的事件处理.
    private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
            {            
                if (e.KeyCode.Equals(Keys.Up)||e.KeyCode.Equals(Keys.Down))
                {                
                    for (int ii = 0; ii < dataGridView1.Rows.Count; ii++)
                    {
                        if (dataGridView1.Rows[ii].Selected)
                        {
    //通过fieldID关联1,2. 项目需要
                            string fieldID = this.dataGridView1.Rows[ii].Cells[0].Value.ToString();                        int b = -1;                        for (int i = 0; i < dataGridView2.Rows.Count; i++)
                            {
                                if (dataGridView2.AllowUserToAddRows == true && dataGridView2.Rows[i].IsNewRow == true)
                                {
                                    continue;
                                }
                                b = b + 1;
                                string fieldID2 = dataGridView2.Rows[i].Cells[0].Value.ToString();
                                if (fieldID2.Equals(fieldID))
                                {
                                    dataGridView2.Rows[i].Selected = true;
                                }
                                else
                                {
                                    if (b < 0) b = 0;
                                    if (b >= dataGridView2.Rows.Count) b = dataGridView2.Rows.Count - 1;
                                    dataGridView2.Rows[b].Selected = false;
                                }
                            }
                        }
                    }
                }            
            }
      

  12.   

     int b = e.NewValue;   
      dataGridView2.FirstDisplayedScrollingRowIndex = b; 看不懂 出错……