代码拉取完成,页面将自动刷新
this.FormBorderStyle = FormBorderStyle.None; //设置窗体为无边框样式
this.WindowState = FormWindowState.Maximized; //最大化窗体
public void writeStr(string str){
char[] chs = str.toCharArray();
foreach(char item in chs){
textBox.text += item;
thread.sleep(0.3) //延迟时间
}
}
但因为C#程序窗口渲染的尿性,大概有以下解决方案
public char[] txtChars;
public char[] writeStr(char[] chs){
textBox.Text += chs[0];
char[] NewChs = new char[chs.length - 1];
for(int i = 0;i < NewChs.length;i++){
//丢弃chs[0],复制数组
NewChs[i] = chs[i + 1];
/*
这里是不会溢出的,因为:
新数组.长度=旧数组.长度-1
故i必小于chs.length
即i最大值(最后一次循环)必为chs的最后一个元素
*/
}
return NewChs;
}
private void timer_tick(...){//调用,启用时钟前在txtChars放入要显示的话
if(txtChars.length == 0){//文本队列被清空后,停止输出。
timer.Enabled = false;
return ;
}
txtChars = writeStr(txtChars);
}
看上去有点复杂,应该还有一个更简单的办法。
我们可以使用BackgroundWork
控件来实现这个功能。首先为了能够更改窗口控件,需要禁用编译器的线程安全检查
在实际编程中请遵循线程安全原则,因为这是个小程序我懒得折腾那么多,折腾麻烦了大部分小白就跑了
禁用线程安全:
Control.CheckForIllegalCrossThreadCalls = false;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。