我有一个包含特定文件夹中所有文件的 MenuItem。
menuitem 在其自己的 Popup 事件中填充(使用System.IO.Directory.GetFiles
),但如果它太靠近屏幕的右下角(或者看起来如此),它会在填充时在屏幕上跳得更高。
如果我在 Popup 事件引发之前填充它,菜单项将在通常的位置打开。
我必须在弹出事件中填充它以使文件夹的内容保持最新。
如果在 Popup 事件中填充菜单项,为什么它会移动,我该如何避免它?
我有一个包含特定文件夹中所有文件的 MenuItem。
menuitem 在其自己的 Popup 事件中填充(使用System.IO.Directory.GetFiles
),但如果它太靠近屏幕的右下角(或者看起来如此),它会在填充时在屏幕上跳得更高。
如果我在 Popup 事件引发之前填充它,菜单项将在通常的位置打开。
我必须在弹出事件中填充它以使文件夹的内容保持最新。
如果在 Popup 事件中填充菜单项,为什么它会移动,我该如何避免它?
在考虑了一点之后,我不确定在弹出时更新菜单是最好的方法。在启动时构建菜单一次,并使用 FileSystemWatcher(或几个,如果有不同的位置)来通知您更改,并根据需要更新菜单。
我对 DataGridView 有同样的问题。
我使用弹出菜单让用户在填充网格时从几个最典型的输入中进行选择。并且根据单击的单元格中的内容,选项会有所不同。我有这个上下文菜单跳跃和闪烁。我尝试了几种方法,最后我做的是
1.重置我的DataGridView的ContextMenu属性(我的意思是我刚刚将此属性归零)
2.在DataGridView的CellMouseDown事件中填充菜单,而不是上下文菜单的Opening事件
3.填充后(仍在 CellMouseDown 中),只需将此菜单分配给此特定单元格
myDataGridView[column, row].ContextMenuStrip = myPopUpMenu;
就是这样。工作正常,没有任何不良的视觉现象;)。