C# Messagebox不会停止显示
我正在尝试编写此代码,以便在单击从C# Messagebox不会停止显示,c#,winforms,C#,Winforms,我正在尝试编写此代码,以便在单击从启动Obj时,“FORM1”将调用此方法以使用并启用timer1 当我点击开始按钮时,狗图片将开始向右移动,直到到达X=620,然后它将显示messagebox“win” 但是,消息框会一直显示,并且在小狗到达目标线后不会停止 class dog { public int startpost; public int TrackLenght = 620; public PictureBox dogpic = null; public
启动Obj时,“FORM1”
将调用此方法以使用并启用timer1
当我点击开始按钮时,狗图片将开始向右移动,直到到达X=620
,然后它将显示messagebox“win”
但是,消息框会一直显示,并且在小狗到达目标线后不会停止
class dog
{
public int startpost;
public int TrackLenght = 620;
public PictureBox dogpic = null;
public int Location = 0;
public Random random=new Random();
public void ResetStart()
{
dogpic.Location = new System.Drawing.Point(40, startpost);
}
public bool testrun()
{
Point p = dogpic.Location;
if (p.X < TrackLenght)
{
int distance = random.Next(5);
p.X = p.X + distance;
dogpic.Location = p;
Location = dogpic.Location.X;
return false;
}
else
{
MessageBox.Show(dogpic.Name + " win");
return true;
}
}
}
类狗
{
公共int startpost;
公共int轨道长度=620;
公共图片框dogpic=null;
公共int位置=0;
公共随机=新随机();
public void ResetStart()
{
dogpic.Location=新系统图纸点(40,startpost);
}
公共bool测试运行()
{
点p=狗的位置;
如果(p.X<轨道长度)
{
int距离=随机。下一步(5);
p、 X=p.X+距离;
位置=p;
位置=dogpic.Location.X;
返回false;
}
其他的
{
MessageBox.Show(dogpic.Name+“win”);
返回true;
}
}
}
您可以使用计时器
timer.Interval=5000;
timer.Enabled=true;
MessageBox.Show(dogpic.Name + " win");
您可以将其与tck事件关联
private void timer_Tick(object sender,EventArgs evt) {
timer.Enabled=false;
}
获胜后,尝试重置p.X 不了解您的代码,但我认为您应该这样做:
public bool testrun()
{
Point p = dogpic.Location;
if (p.X < TrackLenght)
{
int distance = random.Next(5);
p.X = p.X + distance;
dogpic.Location = p;
Location = dogpic.Location.X;
return false;
}
else
{
MessageBox.Show(dogpic.Name + " win");
ResetStart()
return true;
}}}
public bool testrun()
{
点p=狗的位置;
如果(p.X<轨道长度)
{
int距离=随机。下一步(5);
p、 X=p.X+距离;
位置=p;
位置=dogpic.Location.X;
返回false;
}
其他的
{
MessageBox.Show(dogpic.Name+“win”);
ResetStart()
返回true;
}}}
单击按钮时,您应调用ResetStart()函数,该函数将启用计时器并执行您的工作,当到达终点时,它应禁用计时器
class dog
{
public int startpost;
public int TrackLenght = 620;
public PictureBox dogpic = null;
public int Location = 0;
public Random random=new Random();
public void ResetStart()
{
dogpic.Location = new System.Drawing.Point(40, startpost);
timer.Enabled=true;
}
public bool testrun()
{
Point p = dogpic.Location;
if (p.X < TrackLenght)
{
int distance = random.Next(5);
p.X = p.X + distance;
dogpic.Location = p;
Location = dogpic.Location.X;
return false;
}
else
{
MessageBox.Show(dogpic.Name + " win");
timer.Enabled=false;
return true;
}
}
}
类狗
{
公共int startpost;
公共int轨道长度=620;
公共图片框dogpic=null;
公共int位置=0;
公共随机=新随机();
public void ResetStart()
{
dogpic.Location=新系统图纸点(40,startpost);
timer.Enabled=true;
}
公共bool测试运行()
{
点p=狗的位置;
如果(p.X<轨道长度)
{
int距离=随机。下一步(5);
p、 X=p.X+距离;
位置=p;
位置=dogpic.Location.X;
返回false;
}
其他的
{
MessageBox.Show(dogpic.Name+“win”);
timer.Enabled=false;
返回true;
}
}
}
希望它能工作。你的
计时器在哪里?停止它。我的计时器在表格1中,我将它与计时器一起保留。Enabled=true;你需要为计时器添加代码,计时器有一个名为Stop()
的方法,我相信我没有理解你的意思。我的回答对你错了吗??我想它会起作用的。我绝对配得上你的否决票:(没关系……你只能对一个问题或答案投一次票,但如果我的答案真的对你有帮助的话。你可以接受它作为答案!!!:)@eathapeking你不能再点击否决票按钮取消它吗?@Bridge:-非常感谢。到现在为止,我一直在想答案中出了什么问题。是第一个回答的人,但得到了-1:(如果我单击“不投票”,它将是-2。起初,我试图取消,但时间已过
class dog
{
public int startpost;
public int TrackLenght = 620;
public PictureBox dogpic = null;
public int Location = 0;
public Random random=new Random();
public void ResetStart()
{
dogpic.Location = new System.Drawing.Point(40, startpost);
timer.Enabled=true;
}
public bool testrun()
{
Point p = dogpic.Location;
if (p.X < TrackLenght)
{
int distance = random.Next(5);
p.X = p.X + distance;
dogpic.Location = p;
Location = dogpic.Location.X;
return false;
}
else
{
MessageBox.Show(dogpic.Name + " win");
timer.Enabled=false;
return true;
}
}
}