C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.86795 の関連記事表示

<< 0 >>
■86795  Re[2]: メッセージボックスが出ない
□投稿者/ にゃるら -(2018/03/16(Fri) 11:21:57)
    Altキー(またはF10キー)でメニューを選択状態にして、Enterキーを押しっぱなしにしてみてください。
    メッセージ2が出るとは思いますが、勝手に閉じるのが見えると思います。
    メニューをクリックしたときにそのことが表示されているメッセージボックスにも伝わっているのかもしれないですね。
    
    では何が起きているのだろう?
    最初に出すメッセージボックス代わりにFormクラスを使ってみました。
    Formのイベントをいくつか拾えるようにDebug.WriteLineを入れてみました。
    SetVisiableCore(true)は呼ばれているけど、shownイベントが起きていないようですね。
    表示しようとするときに何か起きて、そのままクローズ処理が走っているようです。
    うーん、なんだろう?
    
    public Form1()
    {
        Controls.Add(new UserControl1());
    
        Menu = new MainMenu(new MenuItem[] { new MenuItem("&File...", (sender, e) =>
        {
            var control = Controls[0];
            Controls.Remove(control);
            control.Dispose();
    
            Controls.Add(new UserControl1());
        })});
    }
    
    class UserControl1 : UserControl
    {
        private static bool init = true;
    
        public UserControl1()
        {
            Controls.Add(new Button());
    
            if (init)
            {
                init = false;
                return;
            }
    
            using (var form2 = new Form2())
            {
                var ret1 = form2.ShowDialog();
                var ret2 = MessageBox.Show($"2 ret1={ret1}");
            }
        }
    }
    
    class Form2 : Form
    {
        public Form2()
        {                
            var btnCancel = new Button();
            btnCancel.DialogResult = DialogResult.Cancel;
            btnCancel.Location = new Point(10, 10);
            btnCancel.Size = new Size(100, 23);
    
            btnCancel.MouseDown += (sender, e) => System.Diagnostics.Debug.WriteLine("form2.btnCancel.mousedown");
            btnCancel.Click += (sender, e) => System.Diagnostics.Debug.WriteLine("form2.btnCancel.click");
            btnCancel.KeyDown += (sender, e) => System.Diagnostics.Debug.WriteLine("form2.btnCancel.keydown");
            btnCancel.KeyPress += (sender, e) => System.Diagnostics.Debug.WriteLine("form2.btnCancel.keypress");
            Controls.Add(btnCancel);
    
            CancelButton = btnCancel;
            StartPosition = FormStartPosition.CenterScreen;
            Size = new Size(500, 400);
    
            Load += (sender, e) => System.Diagnostics.Debug.WriteLine("form2.load");
            Shown += (sender, e) => System.Diagnostics.Debug.WriteLine("form2.show");
            FormClosing += (sender, e) => System.Diagnostics.Debug.WriteLine($"form2.closing(sender:{sender.GetType().FullName}, reason:{e.CloseReason})");
            FormClosed += (sender, e) => System.Diagnostics.Debug.WriteLine($"form2.closed(sender:{sender.GetType().FullName}, reason:{e.CloseReason})");
        }
    
        protected override void SetVisibleCore(bool value)
        {
            System.Diagnostics.Debug.WriteLine($"form2.SetVisibleCore(value:{value})");
            base.SetVisibleCore(value);
        }
    }
記事No.86788 のレス /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -