2017-04-24 11 views
-1

私は、矢印キーを使用して文字列のリストをブラウズするためのシステムを実装する方がどうでしょう?これまで私はfoogoohooのようないくつかのテスト文字列を追加した人口リストを持っていましたが、今度は上下の矢印キーを使ってそれらをブラウズすることができるtextBoxを持っていたいと思います。ここでC#で文字列のリストを調べていますか?

は、私が持っているコードのビットは次のとおりです。

List<String> reload; 

private void inputBox_KeyDown(object sender, KeyEventArgs e){ 
     int x = 0; 
     reload.item(x);//this is my bogus guess on how it should be done 
      try{ 
       if (e.KeyCode == Keys.Enter){ 
        itemHandler(); 
        inputBox.Clear(); 
       } 

       if (e.KeyCode == Keys.Up){ 
        inputBox.Text = reload().item(x+1); //again bogus 
        x++; 
       } 

       if (e.KeyCode == Keys.Down)(
        inputBox.Text = reload().item(x-1); //again bogus 
        x--; 
       } 

       else {} 
      } 

      catch(Exception ex) 
      { 
       rtbDisplay.AppendText("Error:" + ex); 
      } 
     } 
+0

あなたはこのためにドロップダウンまたはコンボボックスを使用することはできませんか? – Simsons

+0

私は何でも好きなことをすることができますが、驚くほど前にそれらを使ったことがないので、リストを使って作業する方法を学びたいと思っています... –

+0

'reload'は悪いオブジェクト名です –

答えて

1

xが方法外を定義すべきである[ ]演算子を使用してインデックスを作成することができます。

リストに慣れていない場合は、まずMSDNをお読みください。

は基本的に、あなたはほとんどそれを得た:

int x = 0; 
private void inputBox_KeyDown(object sender, KeyEventArgs e){ 
    try{ 
     if (e.KeyCode == Keys.Enter){ 
      itemHandler(); 
      inputBox.Clear(); 
     } 

     if (e.KeyCode == Keys.Up){ 
      inputBox.Text = reload[x + 1]; 
      x++; 
     } 

     if (e.KeyCode == Keys.Down)(
      inputBox.Text = reload[x - 1]; 
      x--; 
     } 

     else {} 
    } 

     catch(Exception ex) 
     { 
      rtbDisplay.Text = "Error:" + ex.ToString(); 
     } 
    } 
1

まず、あなたがそれ以外の場合は0とするたびに開始されます、メソッドの外で宣言インデックス変数が必要になります。第二のリストには、あなたはそれが0にメソッドが呼び出されるたびに再初期化されないようにするため

int index = 0; 

private void inputBox_KeyDown(object sender, KeyEventArgs e) 
{ 


    if (e.KeyCode == Keys.Enter){ 
     itemHandler(); 
     inputBox.Clear(); 
    } 

    // you should check here whether your index is between 0 and reload.Count-1 
    if (reload.Count > 0 && index > 1 && index < reload.Count -1){ 

     if (e.KeyCode == Keys.Up){ 
      x++; 
     } 

     if (e.KeyCode == Keys.Down)(
      x--; 
     } 

     inputBox.Text = reload[index]; 

    }  
} 
関連する問題