简体   繁体   English

如何使用上下文菜单关闭项禁用 KryptonPage 的删除按钮?

[英]How to disable remove button for KryptonPage with context menu close item?

How to block KryptonPage for close and i need to remove button of docking area and context menu option for close如何阻止KryptonPage 关闭,我需要删除停靠区域按钮和关闭上下文菜单选项

i am using https://github.com/ComponentFactory/Krypton Visual Studio 2015 Community Win 10我正在使用https://github.com/ComponentFactory/Krypton Visual Studio 2015 Community Win 10

There are details about my code for clear understanding有关于我的代码的详细信息,以便清楚地理解

Following screenshot is Form designer about using controls screenshot of Form designer using controls 1下面的截图是Form设计器关于使用控件的截图Form设计器使用控件1

screenshot of Form designer using controls 2使用控件 2 的表单设计器的屏幕截图

Following screenshot of ruining application application ruining time for close menu item for block i want it以下是我想要的块的关闭菜单项的破坏应用程序破坏时间的屏幕截图

There are my form code c#有我的表单代码 c#


// this is main form code

public partial class frmMain : KryptonForm
{

        public frmMain()
        {
            InitializeComponent();
            kryptonPanel1.Dock = DockStyle.Fill;
            kryptonDockableWorkspace.Dock = DockStyle.Fill;
            kryptonPanel.Dock = DockStyle.Fill;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            KryptonDockingWorkspace w = kryptonDockingManager.ManageWorkspace(kryptonDockableWorkspace);

            kryptonDockingManager.ManageControl(kryptonPanel, w);
            kryptonDockingManager.ManageFloating(this);


            kryptonDockingManager.AddDockspace("Control", DockingEdge.Left, new KryptonPage[] { NewWinTools() });
            kryptonDockingManager.AddDockspace("Control", DockingEdge.Bottom, new KryptonPage[] { NewWinTools(), NewWinTools(), NewWinTools(), NewWinTools() , NewWinTools() });

            kryptonDockingManager.AddToWorkspace("Workspace", new KryptonPage[] { NewWinControl() });


        }


        private KryptonPage NewPage(string name, int image, Control content)
        {
            // Create new page with title and image
            KryptonPage p = new KryptonPage();

            p.Text = name;
            p.TextTitle = name;
            p.TextDescription = name;
            p.ImageSmall = imageListSmall.Images[image];

            // Add the control for display inside the page
            content.Dock = DockStyle.Fill;
            p.Controls.Add(content);

            return p;
        }


        private KryptonPage NewWinControl()
        {
            UserControl1 br = new UserControl1();

            KryptonPage page = NewPage("New Tab", 0, br);

            page.ClearFlags(KryptonPageFlags.DockingAllowAutoHidden | KryptonPageFlags.DockingAllowDocked);

            return page;
        }

        private KryptonPage NewWinTools()
        {
            UserControl1 br = new UserControl1();

            KryptonPage page = NewPage("Tools 1 ", 2, br);
            page.ClearFlags( KryptonPageFlags.DockingAllowClose);

            return page;
        }

}

please help for block close KryptonPage请帮助阻止关闭 KryptonPage

I have just come across the same issue.我刚刚遇到了同样的问题。 I can see that this question was answered here我可以看到这个问题在这里得到了回答

It looks like there is no way of actually removing the close button but you can intercept it and then ignore the event.看起来没有办法实际删除关闭按钮,但您可以拦截它然后忽略该事件。

In the interest of completeness, this is the code you need to write:为了完整起见,这是您需要编写的代码:

private void CreateDockWorkspace()
{
    KryptonDockingWorkspace w = kryptonDockingManager.ManageWorkspace("Workspace", kryptonDockableWorkspace);
    kryptonDockingManager.ManageControl("Control", kryptonPanel, w);
    kryptonDockingManager.ManageFloating("Floating", this);

    kryptonDockingManager.AddToWorkspace("Workspace", new KryptonPage[] {
            NewPage("Overview"),
            NewPage("Main"),
            NewPage("Report"),
    });

    // This is where you wire up the CloseAction event handler
    var workspace = kryptonDockingManager.CellsWorkspace.FirstOrDefault();
    workspace.CloseAction += HandleTabCloseAction;
}

private void HandleTabCloseAction(object sender, CloseActionEventArgs e)
{
    // This event handler ignores the action
    e.Action = CloseButtonAction.None;
}

private KryptonPage NewPage(string name)
{
    var p = new KryptonPage();
    p.Text = name;
    p.TextTitle = name;
    p.TextDescription = name;

    content.Dock = DockStyle.Fill;
    p.Controls.Add(content);

    return p;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM