一直搞不太清下面的一个问题,
请大家说说你们怎么实现的呢?还有这个问题,到底属于那类型问题?
namespace tryForm
{
public class A : System.Windows.Forms.Form
{
//这个是建立项目自动生成的窗体类
//假设有个进度条, progressBar1..
private System.Windows.Forms.ProgressBar progressBar1; ....
[STAThread]
static void Main() 
{
Application.Run(new A());
}
...
B classB = new B();
....
}
....
public class B
{
//想建立这个类,其中 A类中进度条的进度依据B类中的i变化来实现进度显示
int i;

....
}
          
}A类中定义一个 B类 的实例吧?但是怎么把 B.i 的变化 反馈到 A类中的 progressBar1 的变化呢???
(进度条的工作原理明白,,问题重点是 A.progressBar1.Value  怎么 时时 与 B.i 的值同步)。此类问题(通信吧,不知道这么叫对否),困扰我很久。这属于什么问题呢?请大家帮帮小弟!!

解决方案 »

  1.   

    B类是B类,实例化是实例化
    比如你的例子中 A 类中包含的是B的一个实例化对象classB A中进度条要同步的是classB.i,而不是B.i(实际上根本就不能这么写)时时保持同步要看你这个 classB.i什么时候变化,在变化的时候写上progressBar000.value=classB.i不就行了吗。当然像进度条显示之类的问题一般都是在处理其他连续动作的时候进行的,这时候大多数的情况都采用多线程,这样就使得问题复杂了一些,具体看看多线程方面的东西吧。
      

  2.   

    不好意思,上面是写错了,我想写 classB.i如上所说 在B类中 classB.i 变化的时候 更改  A类的 progressBar000.value.可是报错信息说 progressBar000 不存在的呀... 不可以改变的.
      

  3.   

    D:\MyWorks\C#\File_Research[Cobol]\File_Research\Mid_Control.cs(55): 找不到类型或命名空间名称“progressBar1”(是否缺少 using 指令或程序集引用?)
    报错信息!!! B类中并没有 progressBar1 呀...问题就是这个.
      

  4.   

    charles_y(难得糊涂) 线程问题我已考虑到... 因为 B 类中要做 很多复杂操作...而且此同时 主窗体还需要 其他操作..谢谢提醒这点..
      

  5.   

    namespace tryForm
    {
    public class A : System.Windows.Forms.Form
    {
    public  System.Windows.Forms.TextBox txtPath;; 
    ....
    [STAThread]
    static void Main() 
    {
    Application.Run(new A());
    }
    ...
    B classB = new B();
    classB.ch();
    ....
    }
    ....
    public class B : A
    {
    public void ch()
    {
    this.txtPath.Text = "试试";
    }
    ....
    }
              
    }
    txtPath 的 text 内容并没有变,(编译倒是不出错了..)郁闷哪!!
      

  6.   

    this.txtPath.Text = "试试";
    不用this用base 试试!
    我也碰到类似的问题!
    关注!
      

  7.   

    public class A : System.Windows.Forms.Form
    {
    //这个是建立项目自动生成的窗体类
    //假设有个进度条, progressBar1..
    private System.Windows.Forms.ProgressBar progressBar1; ....

    [STAThread]
    static void Main() 
    {
    Application.Run(new A());
    }
    ...
    B classB = new B();
    public A()
    {
    classB.ValueChanged += new EventHandler(ValueChanged);
    } private void ValueChanged(object sender, EventArg e)
    {
    progressBar1.Value = B.I;
    }
    ....
    }
    ....
    public class B
    {
    public event EventHandler ValueChanged

    //想建立这个类,其中 A类中进度条的进度依据B类中的i变化来实现进度显示
    int i;

    public int I{
    get{return i;}
    set{
    i = value;
    if (ValueChanged != null) ValueChanged(this, EventArg.Empty);
    }
    }
    ....
    }更改B类中i的值,都通过调用 B.I = @value;来实现
      

  8.   

    BigIdiot628(大笨蛋,谁叫你不努力!) this如果可以叫做本类,那么
    base 是 父类 的意思吗??
      

  9.   

    进度条在别的窗体访问的话设置成public
      

  10.   

    没人帮忙的原因有2种
    1> 问题太愚蠢
    2> 问题太高深.你的问题属于那一种呢?