2017-02-26 5 views
0

タイトルは実際問題を非常にうまく説明するはずです。新しいUserControlを作成することを検討してください。ただし、私のアプリケーションでは、これらの要素の多くが共通のコードを共有していますが、それらはユーザーコントロールの「サブグループ」の一部です。Visual Studioデザイナで作業中にUserControl基底クラスを継承するエラー

論理的なことは、生成されたCustomUserControlUserControlの間にクラスを「注入」することです。

に似て何か:

public abstract class CommonCustomControl : UserControl 
{ 
    public CommonCustomControl(int v, string other) { 
    } 
} 
public partial class CustomUserControl : CommonCustomControl 
{ 
    CustomUserControl(int v, string other) : base(v, other) { 
    } 
} 

さて、これで問題があるが、クラスは唯一の「一部」のVisual Studioによって生成されるということです。だから、生成されたCustomUserControlクラスがエラーを与える変更:
「基本クラスは、他の部分で宣言されたとは異なり、」

は、どのように私はこのエラーを防ぐことができますか?まだ実際にはVisual StudioのGUIデザイナーで自分のユーザーコントロール要素を設計することができますか?

私はすでに答えをthis questionで提供しようとしました。しかし、まったく動かないようです。 (WPFバージョンではなくwinformsについて話しているかもしれません)

[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<InterfaceHandler, UserControl>))] 
public abstract class CommonCustomControl : UserControl 
{ 
    private readonly int _v; 
    private readonly string _other; 

    public CommonCustomControl(int v, string other) { 
     _v = v; 
     _other = other; 
    } 
} 

public partial class CustomUserControl : CommonCustomControl 
{ 
    public CustomUserControl(int v, string other) : base(v, other) { 
    } 
} 

何が問題になりますか?

答えて

0

あなたのC#コードはここに表示されていますが、私はこれが何であるかを見ていきます。

UserControlあなたは基本クラスから継承を宣言しています。 UserControlpartial classです。

部分クラスは、通常、このクラスの他のコードが他の場所にあることを意味します。

エラーは、2つの部分クラス間で基本クラスが異なることを示しています。

UserControlのために独自のpartial classを持っていない場合(つまり、それは単なるクラスではなく、実際のユーザーコントロールです)、それ以外の定義はXAMLにあるものとします。

あなたがコントロールを実装している方法に応じて:それは次のようになります。

<UserControl x:Class="NamespaceHere.CustomUserControl"> ... </UserControl> 

をあなたはこれを持っているかもしれ

<CommonCustomControl x:Class="NamespaceHere.CustomUserControl"> ... </CommonCustomControl> 

をされていない場合、あなたはあなたのXAMLを示すことができましたあまりにも?

+0

ああ私もそのようなことをすることができます。 – paul23

+0

見逃しやすいので... –

関連する問題