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

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

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

Re[2]: C#2005(VB2005でも)デザインモードを判定したい


(過去ログ 27 を表示中)

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

■12105 / inTopicNo.1)  C#2005(VB2005でも)デザインモードを判定したい
  
□投稿者/ のぶ (8回)-(2007/12/30(Sun) 16:12:25)

分類:[.NET 全般] 

こんばんは。

C#2005(またはVB2005)で質問です。

現在、C#2005 でユーザーコントロールを作成しています。
で、コンストラクタで初期化の処理をしているのですが、
デザインモードで動いてしまうと異常終了となってしまいます。

デザイン時にはメソッドを呼ばない様にしたいのですが、
判定するプロパティーってありますか?

VB6だと UserMode (だったかなぁ・・・)で判断できたんですけど・・・

ご存知の方、教えてください。m(__)m

引用返信 編集キー/
■12108 / inTopicNo.2)  Re[1]: C#2005(VB2005でも)デザインモードを判定したい
□投稿者/ 渋木宏明(ひどり) (617回)-(2007/12/30(Sun) 16:58:10)
渋木宏明(ひどり) さんの Web サイト
DesignMode プロパティというモロなのがあります。

けどこれ、コンストラクタでは常に false です。

例外はあると思うけど、コンストラクタにデザイン時に落ちるような設計は避けといた方がよろしんじゃないかと思います。

特にコントロールの場合、Show() されるまではウィンドウとしての実体も持っていないわけで。

引用返信 編集キー/
■12137 / inTopicNo.3)  Re[1]: C#2005(VB2005でも)デザインモードを判定したい
□投稿者/ 魔界の仮面弁士 (555回)-(2007/12/31(Mon) 15:23:52)
No12105 (のぶ さん) に返信
> 現在、C#2005 でユーザーコントロールを作成しています。
> で、コンストラクタで初期化の処理をしているのですが、
> デザインモードで動いてしまうと異常終了となってしまいます。

System.ComponentModel.ISupportInitialize インターフェイスを実装しておき、
BeginInit メソッドが呼ばれた後では初期化しないようにしておき、
EndInit メソッドの後で初期化されるようにしておくとか。
引用返信 編集キー/
■12189 / inTopicNo.4)  Re[2]: C#2005(VB2005でも)デザインモードを判定したい
□投稿者/ のぶ (10回)-(2008/01/03(Thu) 21:30:51)
No12108 (渋木宏明(ひどり) さん) に返信
> DesignMode プロパティというモロなのがあります。
>
> けどこれ、コンストラクタでは常に false です。
>
> 例外はあると思うけど、コンストラクタにデザイン時に落ちるような設計は避けといた方がよろしんじゃないかと思います。
>
> 特にコントロールの場合、Show() されるまではウィンドウとしての実体も持っていないわけで。
>
返信が遅れてすみません。
InitializeComponent の後にタイマーイベントを使ってDesignModeを判断する、、
という方法で解決しました。(タイマーは邪道でしょうか・・・)

ありがとうございました。


引用返信 編集キー/
■12190 / inTopicNo.5)  Re[2]: C#2005(VB2005でも)デザインモードを判定したい
□投稿者/ のぶ (11回)-(2008/01/03(Thu) 21:32:03)
No12137 (魔界の仮面弁士 さん) に返信
> ■No12105 (のぶ さん) に返信
>>現在、C#2005 でユーザーコントロールを作成しています。
>>で、コンストラクタで初期化の処理をしているのですが、
>>デザインモードで動いてしまうと異常終了となってしまいます。
>
> System.ComponentModel.ISupportInitialize インターフェイスを実装しておき、
> BeginInit メソッドが呼ばれた後では初期化しないようにしておき、
> EndInit メソッドの後で初期化されるようにしておくとか。

返信遅くなりましてすみません。

DesignMode を使用することにしました。
ありがとうございました。

引用返信 編集キー/
■12196 / inTopicNo.6)  Re[3]: C#2005(VB2005でも)デザインモードを判定したい
□投稿者/ Azulean (12回)-(2008/01/04(Fri) 17:36:11)
No12189 (のぶ さん) に返信
> InitializeComponent の後にタイマーイベントを使ってDesignModeを判断する、、
> という方法で解決しました。(タイマーは邪道でしょうか・・・)

DesignModeプロパティの値を見て動きを変えるのはよくないことが起こりますのでご注意下さい。
http://support.microsoft.com/kb/839202/


・ユーザコントロールAの中にユーザコントロールBを貼り付ける。
・フォームにユーザコントロールAを貼り付ける。
・ユーザコントロールBでのDesignModeプロパティはfalseになる。
確認環境
・VC#2005Pro
・VC#2008Exp
引用返信 編集キー/
■12643 / inTopicNo.7)  Re[4]: C#2005(VB2005でも)デザインモードを判定したい
□投稿者/ のぶ (3回)-(2008/01/13(Sun) 22:55:50)
No12196 (Azulean さん) に返信
> ■No12189 (のぶ さん) に返信
>>InitializeComponent の後にタイマーイベントを使ってDesignModeを判断する、、
>>という方法で解決しました。(タイマーは邪道でしょうか・・・)
>
> DesignModeプロパティの値を見て動きを変えるのはよくないことが起こりますのでご注意下さい。
> http://support.microsoft.com/kb/839202/
>
> 例
> ・ユーザコントロールAの中にユーザコントロールBを貼り付ける。
> ・フォームにユーザコントロールAを貼り付ける。
> ・ユーザコントロールBでのDesignModeプロパティはfalseになる。
> 確認環境
> ・VC#2005Pro
> ・VC#2008Exp

すみません。返信遅れました。

DesignMode 使うのは危険ですね・・・・
で、ユーザーコントロールのイニシャライズ時にフラグを立てておいて、
フラグが立っているときは処理を抜けるように対応しました。

ありがとうございました。


引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -