首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

某类获取主窗体中的public变量解决办法

2013-11-01 
某类获取主窗体中的public变量如题:主窗体中有个ArrayList ar我在类trends中某个函数想调用它该怎么写?还

某类获取主窗体中的public变量
如题:
主窗体中有个ArrayList ar
我在类trends中某个函数想调用它该怎么写?
还有 不能通过构造函数来传值,否则传来的值为null
这个ar是变化比较频繁的,
不知道有没有方法在trends中用到ar的函数直接调用;



还有个问题 其他类如何调用主窗体的实例啊,不new ,就是当前打开的窗体
我在Program.cs进行了改动:
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 ff = new Form1();
            Application.Run(ff);
不知如何调用
用全局静态变量应该没问题的吧.变量声明写在 main函数外.在main函数里new.
需要处理的是,一旦窗口被关闭(释放)后,访问可能引发问题(你这个例子貌似不存在,它是主窗口。)

引用:
var ff = Application.OpenForms.OfType<Form1>().First();
ff.ar

这个方法很不错。得到程序所有打开窗口中Form1类型的窗口中的第一个。不过要打开了多个窗口副本会遇到额外的问题(你这个例子也不存在这个问题,它是主窗口。)
[解决办法]
仅供参考。
    public partial class Form1 : Form
    {
        public static ArrayList ar;
        public Form1()
        {
            InitializeComponent();
            ar = new ArrayList();
        }
    }
    public class trends
    {
        public void _trends()
        {
            ArrayList _ar = Form1.ar;
        }
    }

[解决办法]
//类:
public class Trends
{
    private Form ff;
    //带参数构造函数
    public trends(Form ff)
    {
        this.ff = ff;
    }
}
//主窗体
Form

//类的使用窗体
//该窗体可以取到主窗体Form的实例,这个百度都有
Form ff = xxxx;
Trends ts = new Trends(ff);
//原理是将窗体作为变量传递给类

热点排行