我正在尝试将文字插入标签,但文字必须慢慢插入/逐个字符/字母, 有点像旧的MUD游戏。
到目前为止,我尝试过这样做:
private void StoryBox_Click(object sender, EventArgs e)
{
string text = StoryBox.Text;
var index = 0;
var timer = new System.Timers.Timer(2000);
timer.Elapsed += delegate
{
if (index < text.Length)
{
index++;
StoryBox.Text = "This should come out pretty slowly ";
}
else
{
timer.Enabled = false;
timer.Dispose();
}
};
timer.Enabled = true;
}
这是我从网站收集的内容,但我并不特别理解为什么这不起作用。
正如您在StoryBox_Click
下看到的那样
有没有办法实现自动化?因此,当程序打开时,它会计算几秒钟,然后开始写出文本。
答案 0 :(得分:0)
试试这个:
private async void button1_Click(object sender, EventArgs e)
{
string yourText = "This should come out pretty slowly";
label1.Text = string.Empty;
int i = 0;
for (i = 0; i <= yourText.Length - 1; i++)
{
label1.Text += yourText[i];
await Task.Delay(500);
}
}
答案 1 :(得分:0)
您可以在打开GUI后启动Shown
- YourForm
事件。
重复使用您提供的代码并更改一些可能对您有用的内容:
将私有字段添加到YourForm
类:
private Timer _timer;
private int _index;
private string _storyText;
并在YourForm
构造函数
public YourForm()
{
InitializeComponent();
// init private fields;
this._index = 0;
this._storyText = "This should come out pretty slowly";
// Timer Interval is set to 1 second
this._timer = new Timer { Interval = 1000 };
// Adding EventHandler to Shown Event
this.Shown += this.YourForm_Shown;
this._timer.Tick += delegate
{
if (this._index < this._storyText.Length)
{
StoryBox.Text += this._storyText[this._index];
this._index++;
}
else
{
this._timer.Stop();
}
};
}
以及Shown
的{{1}}事件:
YourForm