C#.NET:在标签中显示字符数组的前100个元素,然后在键入时一次将一个元素移动到只读文本框中



我正在用C#做我的第一个合作项目。NET作为一个windows窗体。这是一个将加载到.txt文件中的打字游戏。然后,.txt文件的内容将显示在标签中。问题是,只能显示前100个字符。然后用户必须"键入"显示的内容。对于他们键入的每个正确字符,该字符将从标签中删除并移动到只读文本框中。然后更新原始标签,以便在最后加载一个额外的字符(因为我们现在标签中只有99个字符——我们总是想要100个(。如果你键入错误的字符,什么也不会发生。

除了到目前为止所做的步骤——从.txt文件创建一个char数组之外,我根本不知道如何进行这项工作。这是我的代码(我被卡住的潜艇是最低的(:

string FileContent = string.Empty;
string FilePath = string.Empty;
//File Browser and Uploader
private void btnOpenFile_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
//Filters the file types so we can only choose .txt files.
openFileDialog.InitialDirectory = "c:\";
openFileDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
openFileDialog.FilterIndex = 2;
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
//Get the path of specified file.
FilePath = openFileDialog.FileName;
//Read the contents of the file into a stream.
var fileStream = openFileDialog.OpenFile();
using (StreamReader reader = new StreamReader(fileStream))
{
FileContent = reader.ReadToEnd();
}
}
}
//Loader for the Input Stream
InputStreamLoader();
}
//Applies File Text to Input Stream
private void InputStreamLoader()
{
char[] characters = FileContent.ToCharArray();                            
}

看看这个问题,你必须将按下的键注册为触发的事件。然后调用的方法只需检查数组中的第一个字符。

因此,将数组存储在表单上或作为静态变量,以便在事件方法中访问它,然后简单地将第一个charArray元素与接收到的输入进行比较(我猜可用的Properties"Keys.O"包含一些字符串作为输出,如果没有,则必须切换以处理每个键。然后简单地进行比较。

if(e.KeyCode.ToLower() == charArray[0]) { // do stuff }

如果条件为true,则将第一项设置为可以在下次运行时跳过/忽略的特定字符,或者将数组复制到除第一项之外的新数组。

文本框。文本将始终显示数组的前100个字符(或skipp x项,具体取决于您可能使用的替换的特殊字符(。

我希望这能帮助你找到出路。