2012-01-27 5 views
0

これは私の問題です。私はこれを書いている場合 -VB.NETインラインデリゲート述語が機能しない

Private ListValue As Object = Nothing 

Private Sub FindIndex(ByVal e As ListBoxFindItemArgs) 
    e.IsFound = Object.Equals(ListValue, e.ItemValue) 
End Sub 

Private Sub SearchValues 
    ListValue = 5 
    Index = Me.lst_department.FindItem(0, True, AddressOf FindIndex) 
End Sub 

しかし、同じことを行うために書かれたこのコードは、動作していない理由を私はちょうど私のウィットの外だ -

Private Sub SearchValues 
    ListValue = 5 
    Index = Me.lst_department.FindItem(0, True, Function(e As ListBoxFindItemArgs) e.IsFound = Object.Equals(ListValue, e.ItemValue)) 
End Sub 
+0

lst_departmentの種類は何ですか?そして、*正確に何が起こっているのですか? (「うまくいきません」と私たちにはあまり言いません)。 –

+0

@ JonSkeet lst_departmentは 'DevExpress.XtraEditors.CheckedListBoxControl'の一種です。私が達成しようとしていることは、私が尋ねたこの質問に言及されています - [Getaboundからアイテムインデックスを取得DevExpress CheckedListBoxControl](http://stackoverflow.com/questions/9003193/get-item-index-from-databound-devexpress- checkedlistboxcontrol)。 –

+1

元の質問では、情報のこれらのビットと「FindItem」の署名の両方を与えておくと便利でした。あなたの次の質問のための提案をhttp://tinyurl.com/so-hintsでお読みください。 –

答えて

4

をあなたの「述語」ないので関数、それはSubです。 VBの最新バージョンを使用している場合は、次のように記述することができます。そうでない場合、あなたは運の外出:

Index = Me.lst_department.FindItem(0, True, Sub(e As ListBoxFindItemArgs) e.IsFound = Object.Equals(ListValue, e.ItemValue)) 

さらに、それは述語ではありません。述部は、あるタイプのFunction(x As T) As Booleanという記号を持つ特定のタイプの関数です。T

+0

'Sub'と書くと、コンパイラは' Expression expected.'というエラーを生成しています。他の方法はありますか? –

+0

@Sohanどうやらあなたは最新バージョンのVB(VB10)を持っていないようです。いいえ、この機能はこれまで存在していなかったので、他の方法はありません。 –

+0

情報ありがとうございます。感謝します。 –

関連する問題