2016-07-08 5 views
0

同等の方法で、以下のように使用してC#でのRichTextBoxコントロールを拡張する方法があり、システムの名前空間を使用してRichTextBoxコントロールを拡張することができます私はクラスを作成し、richtextboxオブジェクトを継承することで古い方法を使用して拡張する方法を知っていますが、私が好むのは、上記のように、新しいカスタムusercontrolを作成する必要なく、ベースのRichTextBoxオブジェクトに機能を追加するその機能を拡張します。にはどうすればいいだけ

明確にするために、私はないには、次の(または類似)を行うために探しています:拡張するこのメソッドが呼ばれているもの

public class Foo : RichTextBox { } 

私がわからないか、それも特定の名前を持っている場合/オブジェクトをこのように拡張すると、すでに数百ものコントロールのツールバーを満たしている新しいコントロールを作成するよりも自然な感じになります。

+0

示されたのは「拡張方法」(https://msdn.microsoft.com/en-us/library/bb383977.aspx)です。答えは、正確に何を達成しようとしているかによって異なります。 – itsme86

答えて

3

何がしたいことはextension methodと呼ばれているが、例えば、この方法は、リッチテキストボックスを拡張します:

public static class RichTextBoxExtensions 
{ 
    public static void MyCustomMethod(this RichTextBox self) 
    { 
     MessageBox.Show("It works, this textbox has " + self.Text + " as the text!"); 
    } 
} 
+0

ありがとうございます。どのネームスペースを使うべきか知っていないでしょうし、それは 'System'の下にもあります。 –

+1

@SanuelJackson:私の答えで述べたように、特定の名前空間はありません。他に何もしたくない場合は、プロジェクトを使用してください。 –

+2

@VisualVincentは正しいとは言え、名前空間は問題ではありません。任意の名前空間の拡張メソッドを使用することができますので、私はそれらのために新しい名前空間を作成し、必要に応じてそれらを私のコードに持っていく傾向があります。 –

1

ちょうどあなたの文字列の拡張子好きですが、最初の引数としてRichTextBoxを使用します。

public static string MyCustomMethod(this RichTextBox richTextBox) 
{ 
    return richTextBox.Text; 
} 

また、コントロールと同じ名前空間を持つ必要はありません。問題なく独自の/プロジェクトの名前空間を使用できます。

+0

いい仕事です。ありがとうございました。 –

関連する問題