2008-08-14 14 views
28

あなたは、一般的なフォームを作成することができるはずです。C#で汎用フォームを使用できますか?

public partial class MyGenericForm<T> : 
    Form where T : class 
{ 
    /* form code */ 
    public List<T> TypedList { get; set; } 
} 

は、有効なC#で、コンパイルされます。しかし、リソースを見つけることができないというイメージがある場合、デザイナーは動作せず、フォームはランタイム例外をスローします。

これは、Windowsフォームデザイナーは、リソースがシンプルタイプの名前で格納されることを前提としているからです。

答えて

18

はい、できます。ここで私はトリックでしばらく前に作られたブログ記事です:

Designing Generic Forms

編集:あなたはすでにそれをこのようにやっているように見えます。この方法はうまく働くので、私はあまりにもハッキリとは考えません。

+1

3つのフォームがある場合はどうなりますか? Form3:Form2が必要です。これには、Form2のジェネリック型のパラメーター+コントロールが含まれます。何か案が? – mynkow

0

私は動作しますが、理想的ではありませんこの問題を回避するためにハック、持っている:

は、そのシンプルな名前でフォームを継承する新しいクラスをプロジェクトに追加します。

internal class MyGenericForm: 
    MyGenericForm<object> { } 

これは、設計者がまだ間違っているものの、予想単純型(<>なしすなわち)がまだ発見されていることを意味します。

関連する問題