none
请问大家,在代码中直接引用Form1,该Form1是指窗口类还是指窗口对象? RRS feed

  • 问题

  • winform程序,在一个类中,我想要用到form1中声明的一个对象。于是我直接写:form1.对象1.属性1=“”。

    按照“对非共享成员的引用要求对象引用”这个要求,既然能够引用form1内的非共享成员,说明form1是对象咯?

    但是,当我把鼠标停在form1上时,出现一个小框,写着“Class Form1",这个意思是是Form1其实是类咯?

    这好像有点儿矛盾?这个不影响我写代码和运行,但是我很困惑,代码里直接写Form1,到底是对象,还是类呢?

    另外,怎样才能看到form1被实例化的代码?是写在哪里的?

    非常感谢!!

    2015年8月25日 8:30

答案

  • 看你是什么语言。VB 的 WinForm 程序(控制台不行、从 Main 启动的不行)允许直接用 Form1 指代该窗体类的默认实例 = 运行时那个唯一的 Form1 窗体。C++ 和 C# 则不行。或者如果你创建了多个 Form1 窗体估计也不行,这没试过。
    2015年8月25日 8:37

全部回复

  • 看你是什么语言。VB 的 WinForm 程序(控制台不行、从 Main 启动的不行)允许直接用 Form1 指代该窗体类的默认实例 = 运行时那个唯一的 Form1 窗体。C++ 和 C# 则不行。或者如果你创建了多个 Form1 窗体估计也不行,这没试过。
    2015年8月25日 8:37
  • 你好,在 WinForm 的 Form1 本身就是一个类别啊!

    假设 winform 的 code 如下:

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            //Form1 屬性成員
            public String MyName { get; set; }

            public Form1()
            {
                InitializeComponent();
            }
        }

        public class MyClass
        {
            public void TEST()
            {
                Form1 frm1 = new Form1();
                frm1.MyName = "MyName";
            }
        }
    }

    这时候你要在 MyClass 类别 用 form1 的类别成员,那么就必须将 Form1 实例化;才能取得 Form1 Class 类别内的成员。

    除非你将 Form1 Class 内的成员宣告成静态成员(static),就可以直接存取 Form1 Class 的成员,

    例如:Form1.MyName = "MyName"

    2015年8月26日 1:10
  • 您好,虽然没有选择你的答案,但是,还是非常感谢你的详细的回答!谢谢!
    2015年8月29日 7:05