[英]Loop through array, show TextBox and wait for ENTER
我有一个视图,用户应在其中使用键盘选择一些选项。
然后必须填充动态值。 对于每个值,将打开一个文本框(每次都应相同),如果用户填写了内容,则按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
我不知道如何解决这个要求。
我会做这样的事情:
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);
综上所述,这确实是进行模态对话的理想人选,除非您在问题中没有说过什么,否则我会继续讨论
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.