【C#備忘ログ】 2014/11/08(土) C#でFormをデザインできなくなる
Visual C#でソースコードをいじっていたらFormがデザイナーで表示できなくなってた、なんてよくありますよね。
この現象が出たら、保存前のバージョンをチェックアウトして・・なんてやってませんか?
この現象が発生するのは、Formのソースファイル(Form1.csなど)に問題がある時です。
問題とは、C#の文法的に正しいかどうかではなく、デザイナーがこのソースファイルを正しく読み込めるかどうかです。
ありがちなパターン1
Formに独自機能を追加させるために、親クラスを追加した、あるいはFormのクラスを抽象クラスにした
namespace BindingListTest
{
public partial class Form1 : CustomForm
{
public Form1()
{
InitializeComponent();
}
}
}
この場合、CustomFormが抽象クラスであった場合に発生します。
ここに詳しく解説されています。
仕方ないので、構成マネージャで「VIEW_TEST」などを作ったのち、プロジェクトのプロパティからビルドを選択し、「条件付きコンパイルシンボル」にVIEW_TESTを追加。
さらに、ソースコードのクラス定義してる行を以下のように切り替え式に。
#if VIEW_TEST
public partial class Form1 : Form
#else
public partial class Form1 : CustomForm
#endif
ありがちなパターン2
Formのソースには、Formクラス以外にも独自クラスを追加するかも知れませんが、Formクラスよりも上で定義するとこの現象が出ます。
namespace BindingListTest
{
public class user
{
public user()
{
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
これで現象が出た場合・・
namespace BindingListTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
public class user
{
public user()
{
}
}
}
こうします。