我作了一个小程序,在登陆窗体上点击登陆按钮,验证用户名和密码以后调出主窗体,现在我想在验证用户是否合法的同时,显示一个进度条,当进度条走完以后,主窗体再显示出来,本人刚开始学c#,肯请高手们帮帮忙,给个设计思想,有代码更好.先表示感谢了
解决方案 »
- winform中 怎么 添加删除服务 启动停止服务??
- .net中,我在aspx.cx页面写了个执行sql语句方法,在该方法里,我想在finally中释放sqlconnection连接,
- 各位大虾,rename问题求助。
- BeginReceive执行异步接受数据的判断问题
- C#智能设备编程-WINCE平台的 datagrid控件怎么用啊
- 指定控件大小时在不同的电脑上面显示不一样?
- winform+C#利用mdi方式显示窗体问题请救?
- 为什么调用这个跟新函数老ERR,大虾帮帮我啊
- 可能我碰上了飞刀说的FindControl的bug,进来看看吧!
- vs2013旗舰版的下载以后安装闪退啊,helphelp,挺急的
- winform组合控件的问题
- 主窗体中新开进程,如何在新进程中控制主窗体的控件??
HandleInterfaceUpdateDelegate interfaceUpdateHandle;
Thread td;
public formMain()
{
InitializeComponent();
interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(StartPro); //实例化委托对象
}
在你进行操作的方法里第一句加上:
this.Invoke(interfaceUpdateHandle);//用指定的参数列表执行指定的委托 最后一行加上:
td.Abort();
这是相关的方法。
private void chang()
{
ProcessBar obj = new ProcessBar();注:ProcessBar是你放置图片的窗口
obj.ShowDialog();
}
public void StartPro()
{
td= new Thread(chang);
td.Start();
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace ProcessBarInNewWindow
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private FrmProcessBar myProcessBar = null; private delegate bool IncreaseHandle(int nValue); private IncreaseHandle myIncrease = null; private void Form2_Load(object sender, EventArgs e)
{
Thread thdSub = new Thread(new ThreadStart(ThreadFun));
thdSub.Start();
} private void ShowProcessBar()
{ myProcessBar = new FrmProcessBar(); myIncrease = new IncreaseHandle(myProcessBar.Increase); myProcessBar.ShowDialog();
myProcessBar = null;
} private void ThreadFun()
{ MethodInvoker mi = new MethodInvoker(ShowProcessBar);
this.BeginInvoke(mi); Thread.Sleep(1000);//Sleep a while to show window bool blnIncreased = false; object objReturn = null; do
{ Thread.Sleep(50); objReturn = this.Invoke(this.myIncrease, new object[] { 2 }); blnIncreased = (bool)objReturn; } while (blnIncreased); }
}
}
i. 在类中见一个委托delegate void SetTextCallback();
ii. 在新建线程访问的函数中写入如下代码
if (this.progress.InvokeRequired)
{
{
SetTextCallback d = new SetTextCallback(startProgress);
this.Invoke(d, new object[] { });
}
else
{
progress.PCElapsedTime = 0;
for (int i = 0;; )
{
if(progress.value==100)
{
progress.value = 0;
}
progress.value += 1 ;
System.Threading.Thread.Sleep(1000);
}
this.Close();
}
}
当你验证结束的时候直接终止刚才新建的线程就行了
我就是这么做的。个人觉得,相当好用