读书人

请求赐教:初学C#的两个有关问题

发布时间: 2012-01-18 00:23:26 作者: rapoo

请求赐教:初学C#的两个问题
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也无济于事。
小弟初学,敬请赐教,不胜感谢!

[解决办法]
for (ulong i = 0; i < 399999999; i++) ;

这种延时可不好,对C#来说,我可能在几毫秒就执行完了,你可以用Thread的Sleep()来试试
[解决办法]
或者用mutex中的waitOne( 1000 )来试试
[解决办法]
在C#里面:

for (ulong i = 0; i < 399999999; i++) ;

这种循环会被“优化”,即便 i < long.maxvalue 也就是眨眼的事情。
[解决办法]
第一个问题:


private void Form1_Load(object sender, EventArgs e)
{
this.Show();
//下面再写你要的代码
//比如MessageBox.Show( "123 ");
}
[解决办法]
1.可以写OnPaint()
2.加上label.Refresh()
[解决办法]
。。。我很菜,提一下我的看法:其实你何必把他们一起写呢?加一个TIMER控件在中间进行连接就行了。
无论你写在哪个事件里面,比方说LOAD吧,除非你用另外的控件跳出,它显示的都是事件触发后全部代码完成后的东东,呵呵,说得不是太清楚,应该可以理解的吧~
例如:
label1.text= "chuci "
//
延迟代码。。。。
//
label1.text= "houlai "

无论选哪个事件,只要他们在同一事件的代码里面显示的都只会是 "houlai "。

何不把延迟代码换成Timer控件。。。
[解决办法]
你第一个问题是:用timer控件 可以设定时间来运行你的那个代码
也可以用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就可以了;


总的来说,你应编程初学者。。?

读书人网 >C#

热点推荐