2011-01-04 6 views
1

今日は問題があります。次のように。 Form1に:その後、私は別の継承フォーム、from2は
パブリッククラスを作成するフォーム

私は、一般的なフォーム、
パブリッククラスのForm1を作成します。
VSデザイナーでform2を表示できません。エラーメッセージは "ファイル内のすべてのクラスを設計できません"です(このエラーメッセージは中国語から翻訳され、中国語メッセージは文中中文不能进行设计です) 。
しかし、このプログラムは正常にコンパイルできます。実行すると、Form1とFrom2の両方が動作します。

デザイナーに継承の一般形式を表示できません

誰でも私にこのことについて助けてもらえますか?ありがとう。

私は母国語ではないので、私は自分の質問を明確に説明してくれることを願っています。

+0

AFAIKこれは既知のVSバグです。どのバージョンを使用していますか? – leppie

+0

私はVS 2010を使用しています – Jerry

答えて

6

これはデザイナーの制限事項です。タイプを指定する暫定派生フォームを追加することで、回避することができます。私は、ブログの記事でこれを説明してきました:

http://adamhouldsworth.blogspot.com/2010/02/winforms-visual-inheritance-limitations.html

+0

アダム、ありがとうございます。私はあなたの記事を読んだ。この記事では、私と同じ問題が議論されています。私はあなたの記事に従って解決策を見つけました。そしてそれはうまく機能します。ありがとう。 あなたの答えを正しいものまたは最良のものとして受け入れたいと思いますが、そうするためのリンクやボタンが見つかりません。私は何をすべきか? – Jerry

+0

@ジェリーそれは心配しないでください。あなたの問題が解決されている限り、私はうまくいきます:-) –

+0

あなたの記事では、2番目の問題が出てきました。DataGridViewを継承フォームで設計することはできません。もう一度、あなたの記事は正しい答えを返します。あなたの答えを受け入れるためのボタンが見つかりました。再度、感謝します。 – Jerry

2

私はpost of Adamへの追加としてのより具体的な答えを出すのが好きでした。

BaseFormは、可能なタイプパラメータの1つである汎用フォームGenericClassの名前です。

BaseForm<T>は次のようになります。

public class BaseForm<T> : Form 
{ } 

まず、あなたは、上記の基本クラスを必要とします。実際には、これはあなたがすでにこの質問にぶつかる前にすでに使用している部分です。

次に、この中間実装を使用します。

public class SampleFormIntermediate : BaseForm<GenericClass> 
{ 
    public SampleFormIntermediate() 
    { 
     InitializeComponent(); 
    } 
} 

そして、このクラスをVisual Studioデザイナーに使用する必要があります。それだけです。私は、それが唯一のDebugモードで使用されますので、コンパイラディレクティブでこれを飾るためにお勧めします:

public partial class SampleForm : SampleFormIntermediate 
{ 
} 

このVisual Studioを使用するものは、デザイナーとどのようにそれを開くために開くように「理解します」。

関連する問題