1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】特定のControlに対して拡張メソッドを使ってみる記事

Last updated at Posted at 2025-06-28

小ネタ記事。
既存の記事だとコントロールを指定するものが見当たらなかったため。

C#では特定のコントロールに対しても拡張メソッドを定義できる。
あたかも、元々持っているかのように振舞わせることが可能
(既に同名のインスタンスメソッドがある場合はそちらが優先される)

interfaceなど、ありとあらゆるクラスを指定出来るらしい(staticクラスやsealedクラスは拡張できない)

参考Link

拡張メソッドを作成するには?[C#/VB]

interfaceにも拡張メソッドは作成できます。

【C#】拡張メソッドの作り方

LINQが拡張メソッドであることが提示されている。

[C#]拡張メソッドを使って、I/Fの変更無しに扱えるフィールドやサービスを増やす

interfaceでの拡張メソッド使用例です。

TextBoxにcustomMethodを追加

以下の例ではTextBoxのプロパティに対して拡張メソッドを定義することで、新しいメソッドを持たせてみる。

拡張メソッドの最初の引数にthisを付けて対象型を指定すれば良い
ここではthis TextBox textBox,

TextPropertyExtentions.cs

using System.Windows.Controls;

namespace FFmpegCommandParseTest
{
    internal static class TextPropertyExtentions
    {
        public static List<string> DivideCommand(this TextBox textBox)
        {
            List<string> divided = new();

            var textToAppend = textBox.Text.Trim();

            if (!string.IsNullOrEmpty(textToAppend))
            {


                textToAppend.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                    .ToList()
                    .ForEach(s => divided.Add(s));
                //空白文字で分割し、空の要素を除外

            }

            return divided;
        }
    }
}

    
変哲もないただのTextBox
  <TextBox Name="CommandTextBox" 
  FontSize="16"
  Height="100" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"  
  Loaded="CommandTextBox_Loaded"/>

これを知ってると、特定のコントロールや任意のクラスに対して手軽に拡張機能が追加出来る。単純ながら非常に広い応用性を持っていると言える。

例えば、一つのクラスファイルが1000行以上になった(責務が集中し過ぎた)ときに、余分な処理を拡張メソッドという形で分割することも可能だろう。まあPartial Classでもいいけど。

visual Studioで

IntelliSense(コード補完)にも出るようになる。

bandicam 2025-06-29 03-45-54-805_Harua.mp4.gif

あとがき

DataGridの振舞い制御とか色々出来そう。
最近はWinUI3に興味持ってるんだけどinstallだけで6GBも占有するのとコード例(アプリ開発例)が少ない。

※小ネタなのでいいねしなくてよいですが、1年間いいね付かない場合はこの記事は削除されます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?