Form1 的Text属性

请问如何动态修改Form1 的Text属性,我在Form1 中无法找到Text属性。有些人说用thsi.Text就能实现。从程序来看: public partial class Form1 : Form,这里的Form1继承自Form,Form1和Form一样都属于类,而不是一个实例,所以我能理解直接使用Form1 .Text是不行的,是否thsi.Text就表示实例化了Form1呢?是否和Form Form1=new Form();等效呢?也没见程序中哪里进行了实例化,请问如果我不使用thsi.Text这样的方式,我要自行实例化Form1,应该在哪里写代码?


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //Form1.Text = "窗口标题被改动";
            this.Text = "窗口标题被改动";
        }
    }
}

首先和你纠正下之前那个GPT刷子灌输的几个错误的观点:
(1)this永远都是有效的实例,为什么?因为如果this为null,那么调用都调用不起来。
比如
Form1 f = null;
f.button1_Click(sender, e);
运行这段代码,会得到一个NullOfReference异常,根本调用不起来。
(2)
为什么不能写 Form1.Text
因为Form1 是类名,类名.成员名 只能是静态成员
比如
class Form1 : Form
{
public static string Text1 {get;set;}
...
private void button1_Click(object sender, EventArgs e)
{
Form1.Text1 = xxx
}
}
这是可以的。
(3)Form1 form1 = new Form1();这里,form1,小写的,是对象实例,而Form1是类名
(4)你的代码,new Form1 写在了哪里?
请你打开 Program.cs 这个源代码文件
里面有
Application.Run(new Form1());
在这里
(5)请你注意,这里有很多人使用GPT AI机器人乱刷,这些人员根本不懂编程,他们刷的东西错误百出。

这里实例化

img

thsi.Text不是表示实例化了Form1 应该是thlis指向了Form1默认构造方法(所以你看不见哪里有实例化)创造的示例即 this=Form1类的当前实例

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答: Form1继承自Form类,因此可以直接使用this.Text属性来修改Form1窗口的标题。this关键字表示当前类的实例,而Form1就是当前类的实例。

    Form1的实例化是在Main函数中完成的,是在程序启动的时候创建的。在代码中没有显示地进行实例化,是因为Windows Forms应用程序框架已经帮我们完成了实例化的工作。

    如果你想要自行实例化Form1,可以在Main函数中进行新增代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp1
    {
        static class Program
        {
            /// <summary>
            /// 应用程序的主入口点
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form1 form1 = new Form1();  // 在这里进行实例化
                Application.Run(form1);
            }
        }
    }
    

    在上述代码中,在Main函数中新增了一行代码"Form1 form1 = new Form1();",就实现了对Form1的自行实例化,在这之后可以通过form1.Text来修改窗口的标题。

    希望这个解答对你有所帮助。如果你还有任何问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^