在这个应用程序中,我有一个contextMenuStrip用于快捷方式。我正在使用的平台附带一个ToolBar。工具栏包含用于缩放,平移和轨道移动的按钮。
当我右键单击激活contextMenuStrip时,我会检查ToolBar中是否有任何按钮 活性。如果为true,我使用“禁用...”创建一个新条目。
在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的按钮。问题是我不需要ToolBar_ButtonClick事件中的任何代码。我只需要点击一下按钮。
如前所述,ToolBar是平台的一部分,我无法使用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)ToolBarButtonClickEventHandler
namespace devDept.Eyeshot
{
public class ToolBarButtonClickEventArgs : EventArgs
{
public ToolBarButtonClickEventArgs(ToolBarButton button);
public ToolBarButton Button { get; }
}
}
3)ToolBarButtonClickEventArgs
public delegate void ToolBarButtonClickEventHandler(object sender, ToolBarButtonClickEventArgs e);
有人能帮助我吗?
提前谢谢。