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

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

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

No.94901 の関連記事表示

<< 0 >>
■94901  C# リサイズイベント発生タイミングについて
□投稿者/ az -(2020/06/02(Tue) 15:02:31)

    分類:[.NET 全般] 

    Visual Studio 2017 (.NET Framework4.6)を使って開発をしています。
    フォーム上にボタンを配置し、画面解像度に応じてフォームサイズを変更するロジックが実装されています。
    フォームサイズ変更時、そのフォームサイズによってボタンサイズを変更する(ボタンサイズの幅、高さを変更する)ように実装されています。
    ボタンサイズ変更時に処理を追加しようと考え、ボタンのResizeイベントに処理を実装しましたが
    この処理が複数回(3回)走っていることがわかりました。
    呼び出し履歴を確認すると、フォームのResizeイベントが3回走っています。
    ここでお聞きしたい疑問点があります。お分かりになる方教えてください。

    (1)フォームのResizeイベントは、Resize完了後でなくResize中に走るのでしょうか?
    (2)(1)の通りであった場合、Resizeイベント発生回数とタイミングは不定と考えてよいのでしょうか?
    (3)(2)の通りであった場合、Resize完了イベントを確実にとらえたい場合は、
      下記URLのような感じで、自分でResize完了をとらえるイベントを実装しなければならないのでしょうか?
      https://www.ipentec.com/document/csharp-form-move-resize-complete
親記事 /過去ログ164より / 関連記事表示
削除チェック/

■94902  Re[1]: C# リサイズイベント発生タイミングについて
□投稿者/ 魔界の仮面弁士 -(2020/06/02(Tue) 16:18:51)
    No94901 (az さん) に返信
    > フォームサイズ変更時、そのフォームサイズによってボタンサイズを変更する(ボタンサイズの幅、高さを変更する)ように実装されています。

    Windows Forms の事だとすれば、フォームのリサイズは
     1: ResizeBegin
     2: Resize & SizeChanged
     3: ResizeEnd
    の順で発生します。2 は 0 回以上複数回発生する可能性があります。
    https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.resizebegin

    1 と 3 は Form 固有のものであり、その他の Control (たとえば Button) は 2 のみです。


    > (1)フォームのResizeイベントは、Resize完了後でなくResize中に走るのでしょうか?

    ドラッグ操作でのリサイズの場合と、コードでのサイズ指定の場合とで変わります。

    手動リサイズ中のイベント発生を抑制したい場合は、OS の [システムのプロパティ] 画面から、
    [詳細設定]タブから「パフォーマンス」の [設定(S)...] ボタンで
    [パフォーマンス オプション] 画面を開き、「ドラッグ中にウィンドウの内容を表示する」の
    チェックを Off にしてみてください。
記事No.94901 のレス /過去ログ164より / 関連記事表示
削除チェック/

■94913  Re[2]: C# リサイズイベント発生タイミングについて
□投稿者/ az -(2020/06/03(Wed) 14:17:55)
    ご教示ありがとうございます。
    フォームは、Windows Formsです。
    最低三回はResizeイベントが走ることを前提として作らないといけないということがわかりました。
    また、簡単なプログラムを作って試してみたのですが
    変更前のサイズと全く同じサイズを指定したときは、Resizeイベントは発生しないことがわかりました。


    No94902 (魔界の仮面弁士 さん) に返信
    > ■No94901 (az さん) に返信
    >>フォームサイズ変更時、そのフォームサイズによってボタンサイズを変更する(ボタンサイズの幅、高さを変更する)ように実装されています。
    >
    > Windows Forms の事だとすれば、フォームのリサイズは
    >  1: ResizeBegin
    >  2: Resize & SizeChanged
    >  3: ResizeEnd
    > の順で発生します。2 は 0 回以上複数回発生する可能性があります。
    > https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.form.resizebegin
    >
    > 1 と 3 は Form 固有のものであり、その他の Control (たとえば Button) は 2 のみです。
    >
    >
    >>(1)フォームのResizeイベントは、Resize完了後でなくResize中に走るのでしょうか?
    >
    > ドラッグ操作でのリサイズの場合と、コードでのサイズ指定の場合とで変わります。
    >
    > 手動リサイズ中のイベント発生を抑制したい場合は、OS の [システムのプロパティ] 画面から、
    > [詳細設定]タブから「パフォーマンス」の [設定(S)...] ボタンで
    > [パフォーマンス オプション] 画面を開き、「ドラッグ中にウィンドウの内容を表示する」の
    > チェックを Off にしてみてください。
記事No.94901 のレス / END /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -