循环遍历数组,显示TextBox并等待ENTER

时间:2016-05-02 11:11:59

标签: c# winforms

我有一个视图,用户应该使用键盘选择一些选项。

然后必须填充动态数量的值。对于每个值,将打开一个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

我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分: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);

所有这些都说,这对于一个模态对话来说真的是一个很好的候选人,除非你的问题中没有提到你的问题,否则我会选择一个