WinForm コントロールを呼び出すこの一般的な関数があります。
public static void Invoke(this Control c, Action action)
{
if (c.InvokeRequired)
c.TopLevelControl.Invoke(action);
else
action();
}
無意味なことを防ぐために、より厳しい制約を加えることで、より良いものにすることを考えています。
button1.Invoke(() => list.Add(1));
また、次のような冗長な入力が存在する可能性があります。
button1.Invoke(() => button1.Hide());
すでに is を指定しているためthis
ですbutton1
。
だから私はそれを作った:
public static void Invoke<T>(this T c, Action<T> action) where T : Control
{
if (c.InvokeRequired)
c.TopLevelControl.Invoke(action);
else
action(c);
}
今、私は電話する必要があります。
button1.Invoke((c) => c.Hide());
また
button1.Invoke((c) => button1.Hide());
それでも、必要以上のタイピングがあるように感じます。this
isを指定している場合、ラムダ式では、どこで操作するかを伝えるためにダミー変数を再度button1
指定したくありません。c
とにかくこれをもう一度短くすることはできますか?おそらく好き
button1.Invoke(Hide);
また
button1.Hide.Invoke();
C#で?