こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

visual studioのデザイナ画面でエラーがでる

visual studio 2008 express edition
C#3.5
を使用しています。

新しい項目の追加からフォーム画面をそれぞれ
「Base.cs」
public partial class Base : Form
{
public Base(int i)
{
InitializeComponent();
}
}

「CSharp.cs」
public partial class CSharp : Base
{
public CSharp(int i)
: base(i)
{

}
}
とCSharpクラスはBaseクラスを継承させるようにしたいのですが、
上のように引数付きコンストラクタで記述すると
「型 'Test.Base' にコンストラクタが見つかりませんでした。 」
というエラーが出てデザイン画面が表示されなくなります・・・
次のように
「Base.cs」
public partial class Base : Form
{
public Base()
{
InitializeComponent();
}
public Base(int i)
{
InitializeComponent();
}
}
Baseクラスに引数なしのコンストラクタを追加すれば問題なくデザイン画面が表示されるのですが、
これはvisual studioだから起こるエラーなのでしょうか?

投稿日時 - 2009-05-01 03:17:04

QNo.4922386

すぐに回答ほしいです

質問者が選んだベストアンサー

私の経験上の話になりますが,デザイン画面では,対象とするフォームやユーザーコントロールおよびその先祖において,
引数無しのコンストラクタで実体化できないといけません (ドキュメントを現時点では見つけられていません)。
引数無しのコンストラクタが無い場合も,クラスがabstractである場合も,どちらも表示上のエラー原因になります。

あくまで表示上の問題なので,コンパイルは通りますし,実行も出来ます。
実行時エラーになってしまうことを覚悟で,
public Base ()
{
if (!DesignMode) { throw new InvalidOperationException(); }
}
と,デザインモード時のみ引数無しのコンストラクタを許すのもありかと思います。

投稿日時 - 2009-05-01 11:06:52

お礼

ご返答ありがとうございます。
なるほど、そういうことだったんですね。
今、記述は同じままで再起動してやってみたら
今度はCSharpの方のデザイン画面に何も表示されなく(ただ実行画面は正常です)
なったり他にもいくつか挙動がおかしなところがあったので
いろいろ調べることが増えそうです・・・
とりあえずありがとうございました。参考になりました。

投稿日時 - 2009-05-01 16:27:27

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

System.ServiceModel.Web 参照設定。
ソリューションエクスプローラ WcfServiceTest右クリック
「参照の追加」「.NET」タブにて「System.ServiceModel.Web」OK
***.cs「using System.ServiceModel.Web」追記

(参考URL)
http://istb16.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3DC%2523

参考URL:http://istb16.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=cat%3DC%2523

投稿日時 - 2009-05-01 03:53:45

お礼

ご返答ありがとうございます。
おそらくそのエラーではないと思います。
「型または名前空間名 'WebGet' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

ではなくて
「型 'Test.Base' にコンストラクタが見つかりませんでした。 」
というエラー表示だけなので、
一応それを追加して引数なしコンストラクタを外して試しましたが
同じ症状のままでしたので。

投稿日時 - 2009-05-01 16:22:28

あなたにオススメの質問