結構前に書いた記事
でC#版の記事を書いて満足してたんですが、今度はVB.netでもやる必要が出てきたのでメモ。
細かい内容はC#版の記事を見てもらうとして。
今回はVB.netでの記述方法について書きます。
結論
試行錯誤とかそんな御託は置いといて結論だけ知りたいんじゃっていうね。
で、結論としては、
protected override void OnEnter(System.EventArgs e) { //全選択 this.BeginInvoke(new MethodInvoker(AddressOf Me.SelectAll)) }
こう書けばエラー出無くなったよって話。
エラーになる
protected override void OnEnter(System.EventArgs e) { //全選択 this.BeginInvoke(new MethodInvoker(() => this.SelectAll())); }
同じように記述するとですね、当然っちゃ当然なんですが、エラーになります。
「デリゲート ‘MethodInvoker’ には、コンストラクターへの唯一の引数として ‘AddressOf’ 式またはラムダ式が必要です。」
とまぁ、こんなエラーが出て悩むわけです。
ぶっちゃけ、AddressOfってなに?ラムダ式ならどうすりゃええん?
となる訳です。
まとめ
纏めもクソも無いんだけど、両方の記述方法を知っておいて損はないので。
結局、1時間ほど調べたけど、具体的に書いてくれてるページを見つけられなかったから色々試してたらなんかできたって感じ(駄目なパターンw
VB.net
protected override void OnEnter(System.EventArgs e) { //全選択 this.BeginInvoke(new MethodInvoker(AddressOf Me.SelectAll)) }
C#
protected override void OnEnter(System.EventArgs e) { //全選択 this.BeginInvoke(new MethodInvoker(() => this.SelectAll())); }
それぞれこういう風に書こうね。
[…] […]