Borrefts 2023-07-25 10:06 采纳率: 85.7%
浏览 35
已结题

关于#c##的问题:为何Form1.Text没有这个属性

为何Form1.Text没有这个属性

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 WindowsFormsTest
{
    
    public partial class Form1 : Form
    {
        
        
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("这是窗体单击事件","窗体事件");
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("这是按键单击事件", "按键事件");
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Text = "打印窗体";
            
        }

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

我改成this.Text = "窗体标题被改动";后就能正常执行。请问这是什么基本道理?
  • 写回答

2条回答 默认 最新

  • 藏柏 2023-07-25 10:10
    关注

    Form1是一个类,而不是一个实例化的对象。在你的代码中,Form1是继承自Form类的一个自定义窗体类,而this关键字代表当前对象的实例,即当前窗体的实例。

    当你使用Form1.Text时,编译器会认为你想要访问Form1类本身的Text属性,但是Form1类并没有Text属性,所以会报错。正确的方式是使用this.Text,它表示当前窗体对象的Text属性,可以用来获取或修改当前窗体的标题。

    在Form1类中,使用this关键字可以直接访问当前窗体的属性、方法和事件等,而不需要创建一个窗体对象实例来访问这些成员。所以,当你在事件处理方法中使用this.Text时,它实际上是访问当前窗体的Text属性,所以能够正常执行。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月25日