如何从用户控件显示新表单?

发布于 2025-01-04 17:28:57 字数 341 浏览 1 评论 0原文

我正在制作一个用户控件,它是一个文件管理器(剪切、复制、粘贴..等)
所以在移动/处理文件时..当文件已经存在时我必须显示一个消息框..让用户确认覆盖它或取消..但我需要4个按钮

  • [是]
  • [全部是]
  • [否]
  • [取消]

    所以我制作了一个名为“MyMessageBox”的新表单,其中包含 4 个按钮和一个标签。
    我的问题是..在(userControl1.cs)中我无法初始化表单像这样:

    MyMessageBox msgbox = new MyMessageBox("覆盖文件?");
    
  • I'm making a usercontrol which is a file manager (cut ,copy ,paste .. etc)
    so while moving/coping files .. i had to show a messagebox when the file is already exist .. to let the user to confirm overwrite it or cancel .. but i need 4 buttons

  • [YES]
  • [YES TO ALL]
  • [NO]
  • [CANCEL]

    so i made a new form called "MyMessageBox" which contains the 4 buttons and a label.
    my problem is .. in (userControl1.cs) i can't initialize the form like this:

    MyMessageBox msgbox = new MyMessageBox("overwrite file ?");
    
  • 如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(1

    尐偏执 2025-01-11 17:28:57

    首先,您需要确保您的用户控件具有您创建的表单的可见性(即,如果您的表单位于另一个名称空间或项目中,您将需要使用 using 语句或添加项目引用,以便您的用户控件能够使用它。)并且您的构造函数就是您所认为的,正如 M.Babcock 所建议的那样。您可以尝试类似

    UserControl:

    public partial class UserControl1 : UserControl
    {
        MyMessageBox msgbox; 
        public UserControl1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            msgbox  = new MyMessageBox("Overwrite File ?");
            msgbox.ShowDialog();
        }
    }
    

    CustomMessageBox:

    public partial class MyMessageBox : Form
    {
        public MyMessageBox( string Message)
        {
            InitializeComponent();
            label1.Text = Message;
        }
    
    }
    

    这会给您这样的结果。

    在此处输入图像描述

    First of all you need to make sure that your usercontrol has visibility of the form that you created(i.e. if your form is in another namespace or project you will need to use a using statement or add a project reference in order for your usercontrol to be able to use it.) and that your constructor is what you are thinking it is as M.Babcock is suggesting. You can try something like this

    UserControl:

    public partial class UserControl1 : UserControl
    {
        MyMessageBox msgbox; 
        public UserControl1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
            msgbox  = new MyMessageBox("Overwrite File ?");
            msgbox.ShowDialog();
        }
    }
    

    CustomMessageBox:

    public partial class MyMessageBox : Form
    {
        public MyMessageBox( string Message)
        {
            InitializeComponent();
            label1.Text = Message;
        }
    
    }
    

    Which will give you a result like this.

    enter image description here

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文