我有一个视图,用户应该使用键盘选择一些选项。
然后必须填充动态数量的值。对于每个值,将打开一个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 :(得分: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);
所有这些都说,这对于一个模态对话来说真的是一个很好的候选人,除非你的问题中没有提到你的问题,否则我会选择一个