0

Windows CE 5.0組み込みシステムでユーザー インターフェイスを備えたマシンを作成するプロジェクトに取り組んでいます。私は Windows フォームと C# があまり得意ではありません。だからこそ、私はあなたの助けを求めています。

Closing と Showing で奇妙な遷移を行っていたため、フォームの代わりにユーザーコントロールを使用しています。そこで、複数のユーザー コントロールを 1 つのメイン フォームのフルスクリーン タブとして使用することにしました。問題は、状況によっては、モーダル動作でユーザー コントロールを使用する必要があることです。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
        }

英語で申し訳ありませんが、よろしくお願いします、アレックス。

4

1 に答える 1

0

ユーザーコントロールをモーダルにする以外の解決策を見つけました。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() を使用します。最後に、ユーザー コントロールが閉じられるまで、コードの実行が継続されないようにします。

于 2013-08-05T13:47:41.277 に答える