2012-02-20 12 views
0

私はフォームを作成し、コマンドボタンコントロールを作成しました。ユーザーがコマンドボタンを押したときに、自分が選択したリストボックスにキーストロークを送信するようにしたいと思います。vb6の「下向き」矢印を押すとどうやって模倣できますか?

具体的には、現在のアイテムから次のアイテムに移動するようにコマンドボタンに「下」の矢印キーストロークをリストボックスに送りたいとします。

どうすればよいですか?

私のリストボックスの名前は "lstFruits"としましょう。私はそれに焦点を当て、次にSendKeyを試しました。

Form.lstFruits.SetFocus. 
SendKeys.Send ("{DOWN}") 

「引数はオプションではありません」というエラーが表示されました。

+0

参照[アレックスK.の答え](http://stackoverflow.com/a/9361643/11683)の答えのために、エラーについては、http://stackoverflow.com/questions/8070033/c-sharp-dll-cannot-affect-value-of-a-number-passed-by-reference-from-a-vb6-appli/を参照してください。 8070104#8070104。 – GSerg

答えて

2

キーストロークをエミュレートする必要はありません。コード内でリストボックスを制御できます。

lstFruits.SetFocus 
if ((lstFruits.listindex + 1) < lstFruits.listcount) then 
    lstFruits.listindex = lstFruits.listindex+ 1 
endif 

編集

Dim strName As String 
strName = "lstFruits" 

Dim lst As VB.ListBox: Set lst = TheForm.Controls(strName) 

lst.SetFocus 
If ((lst.ListIndex + 1) < lst.ListCount) Then 
    lst.ListIndex = lst.ListIndex + 1 
End If 
+0

こんにちはAlex K.ありがとうございました!リストボックスの名前を含む文字列があればどうなりますか? strName = lstFruitsと言ってください。文字列を受け取り、リストボックスの下に移動できるように、コードを使用するにはどうすればよいですか? – phan

+0

上記のように更新されましたが、通常は名前を文字列として保存する必要はありません。 –

+0

ご協力いただきありがとうございます! – phan