C# panel无法正常显示

sonta2012 2012-09-26 08:53:53
public partial class VPNMainForm : Form
{
public VPNMainForm()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
showLogin(loginPanel);
}

//点击登录按钮时触发登录操作
private void login_Click(object sender, EventArgs e)
{
string userName = userNameBox.Text;
string passWord = passWordBox.Text;
......
showLoginStatus(loginPanel);//加载登录状态panel,问题就出在这!不能在主form中显示这panel!而且发现程序在这个地方会卡几秒,窗口拖不动,这是不是我下面TryConnectVPN()调用了thread.sleep(5000)的原因?另外,当帐号和密码正确时它又会成功显示登录成功的panel,这是为什么?求解
vpn.TryConnectVPN();//这是调用构造函数,下同
if (true)
{
showLoginAlready(loginPanel);
}
else
{
showLogin(loginPanel);
resultPanel.Visible = true;
}
}
public void TryConnectVPN(string connVpnName, string connUserName, string connPassWord)
{
try
{
string args = string.Format("{0} {1} {2}", connVpnName, connUserName, connPassWord);

ProcessStartInfo myProcess = new ProcessStartInfo(VPNPROCESS, args);

myProcess.CreateNoWindow = true;

myProcess.UseShellExecute = false;

Process.Start(myProcess);
Thread.Sleep(5000);
}
catch (Exception Ex)
{
Debug.Assert(false, Ex.ToString());
}
}
//动态加载登录panel
private void showLogin(Panel p)
{
p.Controls.Clear();
p.Controls.Add(this.autoLoginCheckBox);
......
}
//加载登录状态panel
private void showLoginStatus(Panel p)
{
p.Controls.Clear();
p.Controls.Add(this.yanzheng);//这个是加载picturebox,里面有一张进度条gif图片
......
}
//加载成功登录提示panel
private void showLoginAlready(Panel p)
{
p.Controls.Clear();
p.Controls.Add(this.toMin);
......
}
}
求各位路过的大神帮帮忙~~
...全文
455 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycproc 2012-09-26
  • 打赏
  • 举报
回复


肯定是thread.sleep(5000) 这个原因

你在主线程里面休眠自然会假死5秒,你可以另外开一个线程,委托给另一个线程休眠进行阻塞。
然后在这里调用那个线程。这样就行了。
sonta2012 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

楼主这代码很坑爹啊 ,你不全贴出来,看的很蛋疼
[/Quote]
这个……我感觉那个对你们大虾来说没必要~~
sonta2012 2012-09-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

界面停滞不动就是因为你线程休眠的原因。登陆状态可以考虑用模态窗体的方式来显示加载步骤吗?
[/Quote]
那请问有什么方式可以让panel在线程休眠的时候显示出来?或者不用线程休眠用其他什么的方式?“模态窗体”?学C#才几天,新手求关照
浪子-无悔 2012-09-26
  • 打赏
  • 举报
回复
界面停滞不动就是因为你线程休眠的原因。登陆状态可以考虑用模态窗体的方式来显示加载步骤吗?
熙风 2012-09-26
  • 打赏
  • 举报
回复
thread.sleep(5000)

就是这句代码的原因
江湖评谈 2012-09-26
  • 打赏
  • 举报
回复
楼主这代码很坑爹啊 ,你不全贴出来,看的很蛋疼

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧