TA的每日心情 | 开心 2022-3-20 09:50 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
初级工程师
- 积分
- 73
|
悬赏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();
}
}
}
|
-
-
最佳答案
查看完整内容
C#以前学过一点,忘的差不多了,不过语言应该是相通的吧,我不懂装懂一下
init1到init6的逻辑是一样的,只是label不一样,那使用同一个函数,将label作为参数传入不就可以了吗?像这样:
|