2017-07-19 28 views
0

再生ボタンまたはオプションで設定されたホットキーが押されたときにサウンドを追加したサウンドボードプログラムを作成しようとしています。私は、リストビューにサウンド名の横にホットキーを表示したいと思います。しかし、選択された行のインデックスだけを使ってサブアイテムを追加/編集する方法はわかりません。リスト内の特定の行/インデックスにサブアイテムを追加する方法

ListViewItem lvi = new ListViewItem(); 
lvi.SubItems.Add("SubItem"); 
listView1.Items.Add(lvi); 

が、私はそれがユーザによって入力されているため、各行(と思う)のために別の変数を作成することはできませんので、それは便利ではありません。

私が見てきた人々がこれを行います。

これは私が得るために期待しています結果である:

enter image description here

、これは私がこれまで持っているものです:

enter image description here

編集:私はどのように働いてきたがアイテムを追加してください:

private void openFileDialog1_FileOk(object sender, CancelEventArgs e) 
    { 
     foreach (string fileName in openFileDialog1.FileNames) 
     { 
      var item = new ListViewItem(fileName); 
      item.SubItems.Add("Alt+Shift+Numpad1"); 
      lvAudio.Items.Add(item); 
      listBoxAudio.Items.Add(fileName); 
     } 
    } 

しかし、私はまだプログラムの実行中に、選択された行にホットキーを追加/編集する方法がまだ分かりません。

+0

こんにちは多分これはあなたを助けることができるhttps://stackoverflow.com/questions/471859/ – hammerthea

+0

DataGridViewはimho(データベースソースなしでも)を使いやすくなっています – Jimbot

+0

@hammerthea私はこれを試しました: 'try { LSTDEDUCTION。 SelectedItems [0] .SubItems [1] .Text = txtcarName.Text; LSTDEDUCTION.SelectedItems [0] .SubItems [0] .Text = txtcarBrand.Text; LSTDEDUCTION.SelectedItems [0] .SubItems [2] .Text = txtCarName.Text; } catch {} 'しかし、動作しません。私がtry-catchを削除すると 'System.ArgumentOutOfRangeExceptionが発生します: 'InvalidArgument =' 0 'の値が' index 'に無効です。' ' – Squanchy

答えて

0

それらを取得するコレクションと、ユーザのようにそのインデックスをそれらを扱う、項目とサブ項目にアクセスするために:

if (lvAudio.SelectedItems.Count > 0) 
{ 
     var file = lvAudio.SelectedItems[0]; 
     if(file.SubItems.Count > 1) 
     { 
      var shortcut = file.SubItems[1]; 
      shortcut.Text = "New Shortcut"; 
     } 
} 
関連する問題