蛮力-c#
我试着制作简单的暴力算法。它工作正常。但我正在看这个视频 (时间10:30)正如您在textbox2中看到的,可能性发生了变化。但在我的程序中,我创建了1323作为密码,然后当我单击“暴力”时,我等待了5秒钟,在textbox2中得到99999,在textbox3中得到1323。为什么我无法像视频中那样看到textbox2中的数字流蛮力-c#,c#,textbox,brute-force,C#,Textbox,Brute Force,我试着制作简单的暴力算法。它工作正常。但我正在看这个视频 (时间10:30)正如您在textbox2中看到的,可能性发生了变化。但在我的程序中,我创建了1323作为密码,然后当我单击“暴力”时,我等待了5秒钟,在textbox2中得到99999,在textbox3中得到1323。为什么我无法像视频中那样看到textbox2中的数字流 public partial class Form1 : Form { public Form1() { InitializeCo
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int a, b;
private void button1_Click(object sender, EventArgs e)
{
a = Convert.ToInt16(textBox1.Text);
}
private void button2_Click_1(object sender, EventArgs e)
{
for (int i = 0; i < 100000; i++)
{
textBox2.Text = "" + i;
if (a == i) textBox3.Text = "" + i;
}
}
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
INTA,b;
私有无效按钮1\u单击(对象发送者,事件参数e)
{
a=转换为16(textBox1.Text);
}
私有无效按钮2\u单击\u 1(对象发送者,事件参数e)
{
对于(int i=0;i<100000;i++)
{
textBox2.Text=”“+i;
如果(a==i)textBox3.Text=”“+i;
}
}
}
这是因为视频中的程序在单独的线程中运行蛮力循环
在您的程序中,循环在主线程中运行,因此只要它在运行,就没有线程监视所有用户界面更新发生的消息泵
每当文本框的
Text
属性发生更改时,消息队列中就会出现一条消息,需要重新绘制文本框以显示值,但主线程正忙于运行循环,并且在循环完成之前不会对消息进行操作。在windows窗体中,用户界面只有一个线程,代码隐藏中的所有代码也在此线程上处理,因此当它运行for
循环时,不会在屏幕上重新绘制更改
解决这个问题的方法是使用一个单独的线程进行处理,并允许用户界面线程重新绘制屏幕上的更改
关于您的代码示例,您应该声明如下字段:
public partial class Form1 : Form
{
private int a;
private int b;
...
}
你也应该给他们起个更有意义的名字
此外,您应该在int上使用.ToString()
方法,而不是将其与空字符串连接以获取文本值
textBox2.Text = i.ToString();
哇,这是一个声明实例字段的奇怪地方…每次更改文本框时,都需要刷新文本框中的文本,否则它不会显示。不知道如何做到这一点,虽然这与蛮力并没有多大关系,而不是正确地处理UI更新。