0

在这个应用程序中,我有一个快捷方式的 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);

有人能帮助我吗?

先感谢您。

4

0 回答 0