1. 程式人生 > >DEV中右鍵菜單如何只在非空單元格上顯示?

DEV中右鍵菜單如何只在非空單元格上顯示?

cursor update equal 單元格 空白區域 ram mouseup text date

問題:

1. 開發時,我的winform程序中有很多gridview,我希望右鍵菜單只在我點擊非空的行時才顯示,點擊其他空白區域時不顯示;

2. 有一個樹狀導航圖,treelist 中的節點都有右鍵菜單,我希望只在我點擊這個節點時才顯示右鍵菜單,點擊treelist的空白位置不顯示右鍵菜單。

實現:

1.

      #region 右鍵菜單
        private void gvSlurry_MouseUp(object sender, MouseEventArgs e)
        {
            GridHitInfo _gridHI = gvSlurry.CalcHitInfo(new
Point(e.X, e.Y)); if (e.Button == MouseButtons.Right && _gridHI.RowHandle > 0)//根據當前選中的行數非空來確定右鍵菜單顯示。 { menuRow.Show(MousePosition); } } #endregion /// <summary> /// 右鍵菜單選項彈出條件 /// </summary> ///
<param name="sender"></param> /// <param name="e"></param> private void gvSlurry_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) { int _select = gvSlurry.SelectedRowsCount; menuUpdate.Enabled = false; menuDelete.Enabled
= false; if (_select == 1) { menuUpdate.Enabled = true; menuDelete.Enabled = true; } else if (_select > 1) { menuDelete.Enabled = true; } }

需要註意的是:

這裏的右鍵菜單使用的是ContextMenuStrip控件;

GridControl下的ContextMenuStrip不綁定控件ContextMenuStrip1;

這裏用到了GridView的兩個事件,一個是MouseUp事件,一個是PopupMenuShowing事件。第二個事件是用來在菜單顯示之前對菜單的現實條件做一些限制,比如說我這裏的選中一條記錄是右鍵刪除和更新都可用,選中多條記錄時右鍵只有刪除可用。

2.

        private void treeList1_MouseUp(object sender, MouseEventArgs e)
        {
            TreeList _tree = sender as TreeList;
            if (Equals(e.Button, MouseButtons.Right) &&
                Equals(ModifierKeys, Keys.None) &&
                Equals(treeList1.State, TreeListState.Regular))
            {
                Point _point = new Point(Cursor.Position.X, Cursor.Position.Y);
                TreeListHitInfo _hitInfo = _tree.CalcHitInfo(e.Location);
                if (_hitInfo.HitInfoType == HitInfoType.Cell)
                {
                    _tree.SetFocusedNode(_hitInfo.Node);
                }
                else
                {
                    return;
                }

                if (_tree.FocusedNode.HasChildren)
                {
                    popupMenu1.ShowPopup(_point);
                }
                else
                {
                    popupMenu2.ShowPopup(_point);
                }
            }
        }

DEV中右鍵菜單如何只在非空單元格上顯示?