2016-05-02 9 views
0

キーボードでいくつかのオプションを選択する必要があるビューがあります。配列をループし、TextBoxを表示してEnterを待つ

次に、動的量の値を入力する必要があります。各値に対して、TextBoxが開かれます(毎回同じでなければなりません)。ユーザーが入力した場合、Enterキーを押すと値が保存され、ループ内の次の要素が同じ手順で入力されます。

私はそのためのモーダルダイアログを開きたくありません。

ここにいくつかの擬似コード:

// ... some code 
MyObject o = new MyObject(); 
foreach(entryToBeFilled in o.myList){ 
    mySampleInputBox.Text = "" 
    mySampleInputBox.Visible = True; 

    // ... some sort of waiting until user hits ENTER inside the InputBox 

    entryToBeFilled = mySampleInputBox.Text; 
} 
mySampleInputBox.Visible = False; 

// ... some code 

私はどのようにこの要件を解決するためには考えています。

私はこのような何かしたい
+0

TextBoxイベントを使用することができます。例えば、 'TextChanged' – Pikoh

+1

' // ... somこれはモーダルダイアログとどう違うのですか? – yaakov

答えて

0

private int _listIndex = -1; 
private IList<string> _listToFill = null; 

private void StartFilling(IList<string> myList) 
{ 
    if (!myList.Any()) 
     return; 
    _listToFill = myList; 
    _listIndex = 0; 
    mySampleInputBox.Text = ""; 
    mySampleInputBox.Visible = true; 
    mySampleInputBox.Focus(); 
} 

private void mySampleInputBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode != Keys.Enter) 
     return; 
    var tb = (TextBox)sender; 
    _listToFill[_listIndex++] = tb.Text; 
    tb.Text = ""; 
    if (_listIndex >= _listToFill.Count()) 
    { 
     tb.Visible = false; 
     _listIndex = -1; 
     _listToFill = null; 
    } 
} 

をそして、あなたは充填開始(およびTextBoxを表示)したいとき:

MyObject o = new MyObject();  
StartFilling(o.myList); 

このすべてが、これは本当に良い候補である、と述べましたあなたがあなたの質問に言っていないことがなければ、私は1つに行きます。

関連する問題