Modal "dialog" usercontrol c#

本文关键字:quot usercontrol dialog Modal | 更新日期: 2023-09-27 18:25:56

我正在进行一个项目,在Windows CE 5.0嵌入式系统上创建一台具有用户界面的机器。我对windows窗体和c#不是很在行。这就是为什么我请求你的帮助。

我使用用户控件而不是表单,因为他们在关闭和显示时进行了奇怪的转换。所以我决定在一个主窗体中使用多个用户控件作为全屏选项卡。问题是在某些情况下,我必须使用具有模态行为的用户控件。我看到了C#的一堆代码,但它是C#WPF或ASP.NET(我不知道是不是一样的)。那么,在C#中有没有任何方法可以创建像模态对话框一样的用户控件呢。我添加了showdialog函数,我只是不知道如何在调用父函数时阻止它。

public abstract partial class cDialog : UserControl, Transparency_Background // Alpha
    {
        cDialog _mFather;
        protected Bitmap _mBackgroundImage;
        public cDialog()
        {
            _mBackgroundImage= new Bitmap(Properties.Resources.logo);
            InitializeComponent();
            btn_exit.Text = Fs.mMemory.GetVocabulary(eVocabulary.X);
        }

        private void cDialog_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.DrawImage(_mBackgroundImage, 0, 0);
        }
        protected virtual void CloseDialog(object sender, EventArgs e)
        {
            if (_mFather!= null)
            {
                _mFather.Show();
                _mFather.TopLevelControl.Controls.Remove(this);
            }
        }
        public virtual void ShowDialog(cDialog father)
        {
            _mFather = father;
            if (_mFather!= null)
            {
                _mFather.TopLevelControl.Controls.Add(this);
                this.BringToFront();
                base.Show();
                _mParent.Hide();
            }
       }

        protected override void OnPaintBackground(PaintEventArgs e)
        {
            //Do nothing Double buffering See Alpha.cs
        }

对不起我的英语提前感谢,亚历克斯。

Modal "dialog" usercontrol c#

我找到了一个不同的解决方案,使我的用户控件成为模态。我决定在cDialog中添加一个新类,其中:

public abstract class cSubExecutionDialog
{
      public abstract UpdateParent();
}

我在我的对话框关闭方法中添加了:

protected virtual void CloseDialog(object sender, EventArgs e)
{
     if (_mFather!= null)
     {
         _mFather.Show();
         _mFather.TopLevelControl.Controls.Remove(this);
         _mFather.SubExe.UpdateParent();
      }

}

因此,在调用onShow()之前,我创建了cSubExecution Dialog的一个子类,它使用自己的updateParent onClose()。最后,它阻止代码继续执行,直到用户控件关闭为止。