1 Star 0 Fork 0

梦想精灵 / 祝你早日脱单

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
WTFPL

祝你早日脱单 设计思路(笔记)

执行流程

  1. 启动界面
  2. 五秒后载入窗口2,黑色背景全屏
  3. 从数组中按照顺序抽取文本并按顺序准备显示
  4. 每条文本至少显示5秒,点击继续
  5. 结束后自我销毁

全屏代码:

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;
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004 Copyright (C) 2004 Sam Hocevar <sam@hocevar.net> Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. You just DO WHAT THE FUCK YOU WANT TO.

简介

得到爱情程序黑客情人节特供版 展开 收起
C#
WTFPL
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/Dreamelf/CSharpGetLovePrograms.git
git@gitee.com:Dreamelf/CSharpGetLovePrograms.git
Dreamelf
CSharpGetLovePrograms
祝你早日脱单
master

搜索帮助