ppc下开发。窗口login 里有个进度条,想在类1中调用这个进度条
public delegate void dgpross(int dq,int max);//定义委托
public static void pross(int d, int z)
{
login fg = new login();
if (fg.InvokeRequired)
{
fg.Invoke(new dgpross(pross), new object[] { d, z });
}
else
{
fg.pBar1.Minimum = 0;
fg.pBar1.Maximum = z;
if (fg.pBar1.Value <= fg.pBar1.Maximum)
{
fg.pBar1.Value = d; }
}
}
类1 中a是socket当前接收到的字节数,调用委托:if (a < 100)
{
login.dgpross d1 =new login.dgpross(login.pross);
d1(a, 100);
}现在进度条没有反映!大家帮我看看哪里出问题了。
public delegate void dgpross(int dq,int max);//定义委托
public static void pross(int d, int z)
{
login fg = new login();
if (fg.InvokeRequired)
{
fg.Invoke(new dgpross(pross), new object[] { d, z });
}
else
{
fg.pBar1.Minimum = 0;
fg.pBar1.Maximum = z;
if (fg.pBar1.Value <= fg.pBar1.Maximum)
{
fg.pBar1.Value = d; }
}
}
类1 中a是socket当前接收到的字节数,调用委托:if (a < 100)
{
login.dgpross d1 =new login.dgpross(login.pross);
d1(a, 100);
}现在进度条没有反映!大家帮我看看哪里出问题了。
if (fg.InvokeRequired)
{
fg.Invoke(new dgpross(pross), new object[] { d, z });}
不要这么写
单独写个函数
fg.pBar1.Minimum = 0;
fg.pBar1.Maximum = z;
if (fg.pBar1.Value <= fg.pBar1.Maximum)
{
fg.pBar1.Value = d;}
-----------
然后在写个调用他的Invokelogin fg = new login();
if (fg.InvokeRequired)
{
fg.Invoke(new dgpross(pross), new object[] { d, z });}统一调用Invoke
see
http://blog.csdn.net/red_angelx/archive/2006/10/27/1353325.aspx
sleep一下下呢,我找找以前写的东东去,
{
login fg = new login(); //这句是不是有问题,每次都new出一个来
..........
}
个人感觉这句话有问题.这个fg是new的,是一个新的对象.不是已经打开的那个.而你操作的是它,不会有反应.
另外,每次调用这个委托的时候,都会生成login的一个新实例,试这将login的实例作为参数传递试试。
简单测试一下就知道了。
login fg = new login();
fg.Show();
还有,这个public static void pross(int d, int z)真的有必要存在吗?
我似乎理解你应用的目的,但真的不理解你编程的思想………………
2.委托函数没有return``加return试试
3.调用是否有循环
4.d1(a, 100)``a为字节数``是否越界``>100了?水平有限``能想到的就这些``
{
fg.Invoke(new dgpross(pross), new object[] { d, z });
}
反射是不是有问题
为什么要让Procss做两件事呢?
把它们分开来做成两个方法!
fg.Invoke(new dgpross(pross), new object[] { d, z });
你这里可是调用本身?