コード例 #1
0
 void _lnkCon_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
 {
     if (e.KeyCode == Keys.Escape)
     {
         this.__timerDropList.Stop();
         this.Visible = false;
     }
     else if (e.KeyCode == Keys.Enter || e.KeyCode == (Keys.LButton | Keys.MButton | Keys.Back))
     {
         _gridCellClick(this.__dropGridView);
     }
     else if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
     {
         __dropGridView.Focus();
     }
 }
コード例 #2
0
        void InitTextDropGrid <T, R, P>(UcDataGridView gridView, Control lnkCon
                                        , List <DropGridCol> colList, P param, Func <P, T> action)
        {
            #region 定位表格
            int     x = 0, y = 0;
            Control curCon = lnkCon;
            while (!curCon.GetType().Name.ToStringHasNull().StartsWith("frm"))
            {
                x     += curCon.Left;
                y     += curCon.Top;
                curCon = curCon.Parent;
            }
            y += lnkCon.Height;

            if (x + gridView.Width > this.FindForm().ClientSize.Width)
            {
                x = (x - gridView.Width) + lnkCon.Width < 0 ? 0 : (x - gridView.Width) + lnkCon.Width;
            }

            if (y + gridView.Height > this.FindForm().ClientSize.Height)
            {
                y = y - lnkCon.Height - gridView.Height < 0 ? 0 : y - lnkCon.Height - gridView.Height;
            }
            this.Left = x;
            this.Top  = y;
            this.BringToFront();
            #endregion
            #region 设置控件的KeyUp事件
            if (!__lstAddDropGridControl.Exists(a => a == lnkCon.Name))
            {
                __lstAddDropGridControl.Add(lnkCon.Name);
                lnkCon.KeyDown += delegate(object sender, KeyEventArgs e)
                {
                    if (e.KeyCode == Keys.Escape)
                    {
                        this.__timerDropList.Stop();
                        this.Visible = false;
                    }
                    else if (e.KeyCode == Keys.Enter)
                    {
                        _gridCellClick(gridView);
                    }
                    else if (e.KeyCode == Keys.Up || e.KeyCode == Keys.Down)
                    {
                        gridView.Focus();
                    }
                };
            }
            #endregion
            #region 表格赋加事件
            if (gridView.Tag != lnkCon)
            {
                gridView.PreviewKeyDown -= _gridView_PreviewKeyDown;
                gridView.PreviewKeyDown += new PreviewKeyDownEventHandler(_gridView_PreviewKeyDown);
                gridView.CellClick      -= _gridView_CellClick;
                gridView.CellClick      += new DataGridViewCellEventHandler(_gridView_CellClick);
            }
            gridView.Tag = lnkCon;
            if (gridView.Rows.Count > 0)
            {
                gridView.Columns[0].Tag = colList;
            }
            #endregion
            if (!this.Visible)
            {
                this.Visible = true;
            }
        }