1.有一段代码,需要它在窗体和窗体上的控件显示后执行,应该把它放在哪里呢?
1)如把它放在构造函数里,执行时窗体还未显示;
2)如把它放在Form_Load事件里,执行时窗体还是没有显示;
3)如把它放在Form_Shown事件里,执行时窗体虽显示了,但窗体上的控件仍未显示。2.有一段代码,它根据执行状态相应修改窗体上已显示的label控件:
/// >> 正在检测网络连接...
/// 正在连接网络...
/// 网络已连接,请进行登录验证:
///label_04.Text=">>"
///label_05.Text="正在检测网络连接..."
///label_06.Text="正在连接网络..."
///label_07.Text="网络已连接,请进行登录验证:"
private void TestAndLinkNetwork()
{
//延时,以后将放置网络硬件测试代码;
for (ulong i = 0; i < 399999999; i++) ;
//label控件属性第一次改变;
label_05.Enabled = false;
label_04.Top += 16;
label_06.Enabled = true; //延时,以后将放置网络连按代码;
for (ulong i = 0; i < 399999999; i++) ;
//label控件属性第二次改变;
label_06.Enabled = false;
label_04.Top += 16;
label_07.Enabled = true;
}
实际执行时,不论延时长短,窗体上总是直按显示label控件属性第二次改变后的结果,而label控件属性第一次改变的结果总是不能被正确显示出来。即使在每次属性改变后加label.Show也无济于事。
小弟初学,敬请赐教,不胜感谢!
1)如把它放在构造函数里,执行时窗体还未显示;
2)如把它放在Form_Load事件里,执行时窗体还是没有显示;
3)如把它放在Form_Shown事件里,执行时窗体虽显示了,但窗体上的控件仍未显示。2.有一段代码,它根据执行状态相应修改窗体上已显示的label控件:
/// >> 正在检测网络连接...
/// 正在连接网络...
/// 网络已连接,请进行登录验证:
///label_04.Text=">>"
///label_05.Text="正在检测网络连接..."
///label_06.Text="正在连接网络..."
///label_07.Text="网络已连接,请进行登录验证:"
private void TestAndLinkNetwork()
{
//延时,以后将放置网络硬件测试代码;
for (ulong i = 0; i < 399999999; i++) ;
//label控件属性第一次改变;
label_05.Enabled = false;
label_04.Top += 16;
label_06.Enabled = true; //延时,以后将放置网络连按代码;
for (ulong i = 0; i < 399999999; i++) ;
//label控件属性第二次改变;
label_06.Enabled = false;
label_04.Top += 16;
label_07.Enabled = true;
}
实际执行时,不论延时长短,窗体上总是直按显示label控件属性第二次改变后的结果,而label控件属性第一次改变的结果总是不能被正确显示出来。即使在每次属性改变后加label.Show也无济于事。
小弟初学,敬请赐教,不胜感谢!
解决方案 »
- DataGridView问题,请大家指点,多谢啦!
- 想做一个类Visual Studio 属性框的对话框,请各位推荐点思路。
- c#代码,把图片导入picturebox中
- 请教一个用IE浏览器打开本地网页并自动post的问题
- VS2005设置的几个小问题
- 如何从string中正确还原0xbf这个字节 我还原的是0x3f?
- dataGridview背景图片
- 打印,同样的东西打三份或更多,怎么打?现在打印一份没问题,可多份或多页就不行了。
- 我在一个winform程序里用DataView的RowFilter筛选时用两个下划线代表两个字符,但是怎么筛选不出来的??
- 请问哪位大侠能提供.NET环境下的COM或者COM+编程的资料(文字或者实例),谢谢!
- 如何判断一个窗体已经打开了
- .net2.0 如何打开其他机器上的解决方案文件?
private void Form1_Load(object sender, EventArgs e)
{
this.Show();
//下面再写你要的代码
//比如MessageBox.Show("123");
}
2.加上label.Refresh()
2、多线程才能看到楼主想要的效果!
无论你写在哪个事件里面,比方说LOAD吧,除非你用另外的控件跳出,它显示的都是事件触发后全部代码完成后的东东,呵呵,说得不是太清楚,应该可以理解的吧~
例如:
label1.text="chuci"
//
延迟代码。
//
label1.text="houlai"无论选哪个事件,只要他们在同一事件的代码里面显示的都只会是"houlai"。何不把延迟代码换成Timer控件
+延时函数
{
label1.Text = i.ToString();
Application.DoEvents();
Thread.Sleep(10);
}
也可以用OnPaint事件 要这样用
private bool t=true;
void OnPaint(object sender,...)
{
if(t)
{
t=false;
//+你的代码 ;
}
你的第二个问题
}
for (ulong i = 0; i < 399999999; i++) ;
可以用Thread.sleep(10000);//线程睡了10秒。。
你的控件:
label_04.Text=">>"
///label_05.Text="正在检测网络连接..."
///label_06.Text="正在连接网络..."
///label_07.Text="网络已连接,请进行登录验证:"
这样用不好:
它们用一个就可以了,还不移动位置;
label_04.Text=">>"
label_04.Text="正在检测网络连接..."
label_04.Text="正在连接网络..."
label_04.Text="网络已连接,请进行登录验证:"或者用listbox就可以了;
总的来说,你应编程初学者。。?
2. 你没有返回窗口不会刷新的, 用多线程来处理吧, 再说也没人象你这样忙等来延时的