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 WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Random r = new Random();
//
string filesizer;
//
filesizer = r.Next(0, 100).ToString();
string yourfile = textBox1.Text;
string myfile = filesizer;
if (String.IsNullOrEmpty(textBox1.Text))
{
MessageBox.Show("Please Enter Your File Size");
}
if (yourfile.Length < myfile.Length)
{
MessageBox.Show("Ha ha your File smol");
this.Close();
}
else
{
MessageBox.Show("You have big File");
}
}
}
}
当我运行这段代码时,什么都没有发生。没有错误,没有消息框,什么也没有。即使当我有空的时候,它也什么也没说。我在这里弄乱了吗?我放在表格上的东西坏了吗?我知道代码不干净而且很难阅读,但这就是事实。不好修复它。
答案 0 :(得分:1)
由于您说“什么也没有发生。没有错误,没有消息框,什么也没有。” ,那么很可能您没有将按钮的Click
事件连接到事件处理程序。为此,请打开表单设计器,选择按钮,然后在“属性”窗口中单击闪电图标(以查看事件),然后为Click
事件选择事件处理程序:
或者,您可以在代码中执行此操作:
private void Form1_Load(object sender, EventArgs e)
{
this.button1.Click += button1_Click;
}
关于代码本身,也许更好的方法是使用数字类型(例如int
或double
而不是string
来比较数字值。
执行此操作的一种方法是使用int.TryParse
从文本框中获取整数值。此方法接受一个字符串,并具有一个out
参数,如果成功,它将设置为转换后的值。它还返回表示成功的bool
,因此我们可以将其用作if
条件:
// Random only needs to be created once at the class level
private Random r = new Random();
private void button1_Click(object sender, EventArgs e)
{
// Do our validation first and exit early if there's invalid input
// Use int.TryParse to determine if the value is a number (and get the converted value)
int userFileSize;
if (!int.TryParse(textBox1.Text, out userFileSize))
{
MessageBox.Show("Please Enter A Numeric File Size");
return;
}
// Get a random file size
int randomFileSize = r.Next(0, 100);
if (userFileSize < randomFileSize)
{
MessageBox.Show("Ha ha your File smol. Mine is: " + randomFileSize);
this.Close();
}
else
{
MessageBox.Show("You have big File! Mine is only: " + randomFileSize);
}
}