在这个应用程序中,我有一个快捷方式的 contextMenuStrip。我使用的平台带有一个工具栏。工具栏包含缩放、平移和轨道移动的按钮。
当我通过右键单击激活 contextMenuStrip 时,我检查是否激活了 ToolBar 中的任何按钮。如果为真,我使用“禁用 ...”创建一个新条目。
在 contextMenuStrip 我想禁用 ToolBar 按钮。
private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ToolStripItem item = e.ClickedItem;
switch (item.Text)
{
case "Screenshot to Clipboard":
singleViewportLayout1.CopyToClipboardRaster();
break;
case "Screenshot to Clipboard (vector)":
singleViewportLayout1.CopyToClipboardVector(true);
break;
case "Panel Report":
Read_Report();
break;
case "Disable Zoom Window":
foreach (var button in singleViewportLayout1.ToolBar.Buttons)
{
if (button.Name == "Zoom Window")
{
//button.Pushed = false;
//singleViewportLayout1.Refresh();
ToolBar_ButtonClick(new object(), new devDept.Eyeshot.ToolBarButtonClickEventArgs(button));
// Click on Toolbar Button to be fired here
}
}
break;
default:
break;
}
}
void ToolBar_ButtonClick(object sender, devDept.Eyeshot.ToolBarButtonClickEventArgs e)
{
MessageBox.Show(e.Button.Name + " clicked");
}
这是我从这个论坛找到的解决方案。当我单击 contextMenuStrip 的“禁用缩放窗口”时,我可以显示消息。
不幸的是,我不知道如何以编程方式单击工具栏的按钮。问题是我不需要 ToolBar_ButtonClick 事件中的任何代码。我只需单击一下按钮。
如前所述,工具栏是平台的一部分,我不能使用 PerformClick()。
我从元数据中获得了一些关于 ToolBar 的信息
1)工具栏
namespace devDept.Eyeshot
{
[TypeConverter(typeof(ToolBarConverter))]
public class ToolBar : BarBase, IDisposable
{
public float CornerRadius;
public Color PressedColor;
public ToolBar();
public ToolBar(toolBarPositionType position, bool visible, ToolBarButton[] buttons);
[Description("The list of ToolBar Buttons.")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ToolBarButton[] Buttons { get; set; }
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Description("ToolBar position.")]
public toolBarPositionType Position { get; set; }
[Description("ToolBar visibility status.")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool Visible { get; set; }
[Description("Occurs when a ToolBar button is clicked.")]
public event ViewportLayout.ToolBarButtonClickEventHandler ButtonClick;
public static GraphicsPath BuildRoundedRectangle(float x, float y, float width, float height, float radius);
public override bool Contains(Point mousePos);
public void Dispose();
}
}
2) 工具栏按钮点击事件处理程序
namespace devDept.Eyeshot
{
public class ToolBarButtonClickEventArgs : EventArgs
{
public ToolBarButtonClickEventArgs(ToolBarButton button);
public ToolBarButton Button { get; }
}
}
3) 工具栏按钮点击事件参数
public delegate void ToolBarButtonClickEventHandler(object sender, ToolBarButtonClickEventArgs e);
有人能帮助我吗?
先感谢您。