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

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

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

No.92414 の関連記事表示

<< 0 >>
■92414  Re[1]: 消えないフォーム
□投稿者/ 魔界の仮面弁士 -(2019/09/24(Tue) 09:54:17)
    2019/09/24(Tue) 10:37:43 編集(投稿者)

    No92410 (犬夜叉 さん) に返信
    > Form2を作ります。
    > public From2()

    ありがちなミスですね。
    From / Form とか Namae / Name とか Expect / Except とか Drag / Drug とか…。


    > その状態でFomr2以外の場所をクリックすると

    こっちのスペルミスは珍しいかも。(^^;


    > private void From2_Load(object sender, EventArgs e)
    > {
    >  this.Capture = true;
    > }

    こんなことをしたら、Form2 上に TextBox があっても、
    その上にマウスを重ねても「I カーソル」になりませんよね。

    Form2 上のコントロールを選択する場合も、
    1 回目のクリックが捨てられてしまい、2 回目のクリックで
    ようやくアクティブになる状態となり、操作性が悪くなりそうですが…。


    > Form2をクリックすると、消えなくなります。

    最初のクリックで消えないのは、
     GetWindowContainState(this)
    で領域内かどうかを判定しているからですね。
    常に消したいなら、領域判定せずに Close(); すれば消えます。

    領域内であれ領域外であれ、一度クリックすれば、キャプチャーは終了するので、
    それ以降はもう、領域外操作では MouseDown イベントは発生しません。
    再 Capture するなどしない限りは。


    > Form2以外をクリックするとForm2が消えるようにするにはどうすればよいのでしょうか?

    RawInput を捉えるとか。

    // Install-Package SharpDX.RawInput

    あるいはマウスクリックに拘らないなら、Deactivate イベントで。

    public partial class Form2 : Form
    {
     public Form2()
     {
      InitializeComponent();
     }
     private void Form2_Load(object sender, EventArgs e)
     {
      Deactivate += delegate { Close(); };
     }
    }
記事No.92410 のレス /過去ログ159より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -