2016-09-09 2 views
1

私はリストビューにパスワードを設定しています。 次に、選択した項目のテキストをクリックして、テキストボックスに渡します。リストボックスの項目値でtextboxを設定するC#

これまでのところ私が持っている:

private void passwordListView_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     ListViewItem listViewItem = new ListViewItem(); 
     listViewItem = passwordListView.SelectedItems[0]; 
     passwordTextBox.Text = listViewItem.Text; 
    } 

それは私がそれを押すと、それはテキストボックスを移入が、私は、リストビューで異なるパスワードをクリックした場合、それが例外をスロー初めての作品。

わかりやすいものを除外しましたか?

+0

何が例外ですか? – Mostafiz

+0

これを実行する前に、選択したアイテムにカウントがあるかどうかをチェックし、0の場合は終了します。このイベントは、アイテムを選択すると2回、現在のアイテムを選択解除したときと新しいアイテムを選択したとき。 – Kell

+0

これはArgumentOutOfRangeExceptionです。 – Fendec

答えて

0

winforms ListViewでSelected Indexを変更すると、最初に選択解除された項目の最初のイベントが表示されます。その時点で、SelectedItemsは空です。 if (passwordListView.SelectedItems.Count == 0) return;

を通してこのため

チェックこの後、新しい選択になります2番目のイベントを取得し、あなたはこれに基づいて行動することができます。

ListViewItem listViewItem = passwordListView.SelectedItems[0];

+1

トリッキーな感謝をしたようですね! – Fendec

0

はたぶん、あなたはこの試みることができる:

private void passwordListView_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if(passwordListView.SelectedItems.Count > 0) 
     passwordTextBox.Text = passwordListView.SelectedItems.First().Text; 
} 
あなたのスニペットにあるよう

ところで、あなたは新しいのListViewItemを作成する必要はありません、これは余分な不要な創造を保存します

+2

助けてくれてありがとう。 – Fendec

関連する問題