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

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

C# と VB.NET の入門サイト

Re[2]: C# リサイズイベント発生タイミングについて


(過去ログ 164 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■94901 / inTopicNo.1)  C# リサイズイベント発生タイミングについて
  
□投稿者/ az (5回)-(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
引用返信 編集キー/
■94902 / inTopicNo.2)  Re[1]: C# リサイズイベント発生タイミングについて
□投稿者/ 魔界の仮面弁士 (2732回)-(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 にしてみてください。
引用返信 編集キー/
■94913 / inTopicNo.3)  Re[2]: C# リサイズイベント発生タイミングについて
□投稿者/ az (6回)-(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 にしてみてください。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -