上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
12下一页
返回列表 发新帖

麻烦哥哥教我写c#

[复制链接]
  • TA的每日心情
    开心
    2022-3-20 09:50
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    60

    回帖

    73

    积分

    初级工程师

    积分
    73
    发表于 2021-9-29 14:12:36 | 显示全部楼层 | 阅读模式
    悬赏5油猫币已解决
    本帖最后由 324847373 于 2021-9-29 14:47 编辑

    如图,怎么精简代码,让六个变更为一个,不让代码太冗余。
    求求各位gege了。6个label,1个textbox,1个按钮,1个计时器。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace Win_keydown2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            int ystep;
            private void button1_Click(object sender, EventArgs e)
            {
                this.timer1.Enabled = !this.timer1.Enabled;
                if (this.timer1.Enabled == true)
                    this.button1.Text = "暂停";
                else
                    this.button1.Text = "开始";
                this.textBox1.Focus();//让textbox1获得焦点。
            }

            private void Form1_Load(object sender, EventArgs e)
            {
                ystep = 10;
            }

            private void timer1_Tick(object sender, EventArgs e)
            {
                this.label1.Top += ystep; this.label2.Top += ystep; this.label3.Top += ystep;
                this.label4.Top += ystep; this.label5.Top += ystep; this.label6.Top += ystep;
                //填写输了的代码。
                if ((this.label1.Bottom > this.textBox1.Top)||(this.label2.Bottom > this.textBox1.Top)
                    ||(this.label3.Bottom > this.textBox1.Top)||(this.label4.Bottom > this.textBox1.Top)
                    || (this.label5.Bottom > this.textBox1.Top) || (this.label6.Bottom > this.textBox1.Top))
                {
                    this.timer1.Enabled = false;
                    if (MessageBox.Show("您输了是否继续?", "提示", MessageBoxButtons.YesNo)
                        == DialogResult.Yes)
                    { this.timer1.Enabled = true;  
                        init1(); init2();
                        init3(); init4();
                        init5(); init6();
                    }
                    else
                        this.Close();//结束程序的运行
                }
            }
            private void init1()
            {
                Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
                int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
                char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
                this.label1.Text = ch.ToString(); //将字符转换为字符串。
                this.label1.Top = 20;
                ystep++;
                this.textBox1.Focus();
            }
            private void init2()
            {
                Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
                int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
                char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
                this.label2.Text = ch.ToString(); //将字符转换为字符串。
                this.label2.Top = 20;
                ystep++;
                this.textBox1.Focus();
            }
            private void init3()
            {
                Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
                int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
                char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
                this.label3.Text = ch.ToString(); //将字符转换为字符串。
                this.label3.Top = 20;
                ystep++;
                this.textBox1.Focus();
            }
            private void init4()
            {
                Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
                int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
                char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
                this.label4.Text = ch.ToString(); //将字符转换为字符串。
                this.label4.Top = 20;
                ystep++;
                this.textBox1.Focus();
            }
            private void init5()
            {
                Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
                int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
                char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
                this.label5.Text = ch.ToString(); //将字符转换为字符串。
                this.label5.Top = 20;
                ystep++;
                this.textBox1.Focus();
            }
            private void init6()
            {
                Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
                int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
                char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
                this.label6.Text = ch.ToString(); //将字符转换为字符串。
                this.label6.Top = 20;
                ystep++;
                this.textBox1.Focus();
            }

            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (this.textBox1.Text == this.label1.Text)
                    init1();
                if(this.textBox1.Text == this.label2.Text)
                    init2();
                if(this.textBox1.Text == this.label3.Text)
                    init3();
                if(this.textBox1.Text == this.label4.Text)
                    init4();
                if(this.textBox1.Text == this.label5.Text)
                    init5();
                if(this.textBox1.Text == this.label6.Text)
                    init6();
                this.textBox1.Clear();
            }
        }
    }




    NP6HB8C6$`R4$6%RHYSG2VR.png
    NB{OG~UZ~}X0$}V[26DV1ZY.png

    最佳答案

    查看完整内容

    C#以前学过一点,忘的差不多了,不过语言应该是相通的吧,我不懂装懂一下 init1到init6的逻辑是一样的,只是label不一样,那使用同一个函数,将label作为参数传入不就可以了吗?像这样:
  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    860

    回帖

    1359

    积分

    荣誉开发者

    积分
    1359

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-9-29 14:12:37 | 显示全部楼层
    C#以前学过一点,忘的差不多了,不过语言应该是相通的吧,我不懂装懂一下
    init1到init6的逻辑是一样的,只是label不一样,那使用同一个函数,将label作为参数传入不就可以了吗?像这样:
    1. private void init(Label label) //类型可能不对,我猜的
    2. {
    3.   Random r = new Random();  //定义r属于随机类的一个变量,r的值[0,1)
    4.   int t = r.Next(26);   //定义变量t是随机数,范围在[0,26)
    5.   char ch = Convert.ToChar(97 + t);  //Convert.ToChar按照ASCII码将数字转换为字符。
    6.   label.Text = ch.ToString(); //将字符转换为字符串。
    7.   label.Top = 20;
    8.   ystep++;
    9.   this.textBox1.Focus();
    10. }
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    290

    主题

    3864

    回帖

    3789

    积分

    管理员

    积分
    3789

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-29 14:19:38 | 显示全部楼层
    优化空气,至少发伪代码吧
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-20 09:50
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    60

    回帖

    73

    积分

    初级工程师

    积分
    73
    发表于 2021-9-29 14:38:11 | 显示全部楼层
    王一之 发表于 2021-9-29 14:19
    优化空气,至少发伪代码吧

    我发了截图,图没了。。。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    290

    主题

    3864

    回帖

    3789

    积分

    管理员

    积分
    3789

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2021-9-29 15:34:20 | 显示全部楼层
    324847373 发表于 2021-9-29 14:38
    我发了截图,图没了。。。

    好吧。。。图片上传流程是有点麻烦 等大佬来解答,不搞C#
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    632

    主题

    5168

    回帖

    6046

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6046

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2021-9-29 16:19:29 | 显示全部楼层
    这论坛可能都没人会...呜呜呜
    前端论坛,哈哈哈
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-20 09:50
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    60

    回帖

    73

    积分

    初级工程师

    积分
    73
    发表于 2021-9-29 16:39:11 | 显示全部楼层
    麻了,gege们都不会
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-20 09:50
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    60

    回帖

    73

    积分

    初级工程师

    积分
    73
    发表于 2021-9-29 22:29:33 | 显示全部楼层
    cxxjackie 发表于 2021-9-29 20:15
    C#以前学过一点,忘的差不多了,不过语言应该是相通的吧,我不懂装懂一下
    init1到init6的逻辑是一 ...

    请问那6个init();应该怎么改呢?
    DUNB}$XI04MQTM3H$4L)SNX.png
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-3-8 11:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    22

    主题

    860

    回帖

    1359

    积分

    荣誉开发者

    积分
    1359

    荣誉开发者卓越贡献油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-9-29 22:52:22 | 显示全部楼层
    324847373 发表于 2021-9-29 22:29
    请问那6个init();应该怎么改呢?

    init(this.label1);
    init(this.label2);
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-20 09:50
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    3

    主题

    60

    回帖

    73

    积分

    初级工程师

    积分
    73
    发表于 2021-9-29 22:53:33 | 显示全部楼层

    cxxjackie 发表于 2021-9-29 20:15

    C#以前学过一点,忘的差不多了,不过语言应该是相通的吧,我不懂装懂一下
    init1到init6的逻辑是一 ...

    image.png

    哥哥红框里面的代码还可以再精简吗?

    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表