A类无控件,但是要操作B类中的控件,如何操作

解决方案 »

  1.   

    修改B类控件的Modifiers属性为public~
      

  2.   

    先实例化成一个对象,再引用B b= new B()
    b.控件名.name ...
      

  3.   

    1.如果是在A类中新实例化一个B类的话,这样可以用修改属性的方法来对B类中的空间进行操作。
    2.如果不是的话,修改控件属性好像不太好用,是不是也可以把空间改成静态的?感觉在这种情况下传递控件比较好。
      

  4.   

    从“高内聚低耦合”角度来讲,你最好不要直接访问B类的控件,当然你可以把你要访问的控件的属性进行封装,间接的访问B类的属性,这有助于A类和B类灵活的修改,比如:当B类中有一个ListView时,你如果直接访问B类的ListView控件,那么当B类的控件一改(改为gridview)时,你的A类需要完全的修改,这时最好的办法就是公布自己封装的一个类,封装了你要访问的数据及方法,
      

  5.   

    和一般的属性一样public TextBox TxtName
    {
      get {return this.textBox1;}
    }
      

  6.   

    B类:
    public RichTextBox RichMsg
            {
                get { return this.richMessage; }
            }在A类调用:
    B Main = new B();
    B.RichMsg编译通过,但是无界面
      

  7.   

    B类是主程序框架,如果在A类实例化B类,B Main = new B(); 会导致出错,提示:确保你没有无限循环或无限递归
      

  8.   

    B类创建个公有方法:public void LetAVisitMe(A a);然后,在A类中调用:
    b->LetAVisitMe(this);
      

  9.   

    .net 3.5以后,不能直接修改界面类的控件,通过委托实现。
      

  10.   

    用GET 或者SET方法注入,当然也可以用事件,都是相当方便的。
      

  11.   

    从“高内聚低耦合”角度来讲,你最好不要直接访问B类的控件,当然你可以把你要访问的控件的属性进行封装,间接的访问B类的属性,这有助于A类和B类灵活的修改,比如:当B类中有一个ListView时,你如果直接访问B类的ListView控件,那么当B类的控件一改(改为gridview)时,你的A类需要完全的修改,这时最好的办法就是公布自己封装的一个类,封装了你要访问的数据及方法,
      

  12.   

    学习中
    欢迎大家来我的博客
    http://blog.csdn.com/csdbfans
    里面有很多C#的知识,一起讨论一起提高
      

  13.   

    呵呵,如果A类是窗体,我一般是把在B类的构造函数把A类实例传进来,然后在B类中访问A类的属性。而B类的实例又是在A类中创建的。目前就是用这样的方法来处理A、B类的关联,暂时没什么大问题,不知道有没有更好更方便的方式。
      

  14.   

    public static RichTextBox RichMessage
            {
                get { return ; }
            }
    我把属性定义成静态,这样A类就不需要使用B类的实例了,但是原来的return this.richMessage;用不了了,怎么解决?
      

  15.   

    你不觉得这么做很别扭么,
    还不如传实例进去
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Reflection; namespace WindowsApplication180
    {
        public partial class Form1 : Form
        {
            static TextBox _TB = new TextBox();        static public TextBox TB
            {
                get
                {
                    return _TB;
                }
            }        public Form1()
            {
                InitializeComponent();            TB.Parent = this;            new X();
            }
        }    class X
        {
            public X()
            {
                Form1.TB.Text = "a"; 
            }
        }
    }
      

  16.   

    自定义控件-MDI子窗体-MDI父窗体的三层引用(C#) 
    http://www.cnblogs.com/lifw/articles/1609356.html