C# ';TileInterfaceTest.UserControl1.label1由于其保护级别';

C# ';TileInterfaceTest.UserControl1.label1由于其保护级别';,c#,class,user-controls,C#,Class,User Controls,对于我的A2计算项目,我决定使用C#编写一个时间表软件。我一直在尝试编程一个系统,在该系统中,单击Form1中的面板将更改已放置在面板2上的UserControl1上的label1中的文本。起初,这似乎是一项微不足道的任务,但我似乎因为无知而受到了惩罚。正如标题中所述,当使用我认为有效的解决方案时,我被告知label1“由于其保护级别而无法使用”,坦率地说,这让我感到困惑。不管怎样,这是代码。我对C#和StackOverflow很陌生,所以请容忍任何愚蠢的错误 using System; usi

对于我的A2计算项目,我决定使用C#编写一个时间表软件。我一直在尝试编程一个系统,在该系统中,单击Form1中的面板将更改已放置在面板2上的UserControl1上的label1中的文本。起初,这似乎是一项微不足道的任务,但我似乎因为无知而受到了惩罚。正如标题中所述,当使用我认为有效的解决方案时,我被告知label1“由于其保护级别而无法使用”,坦率地说,这让我感到困惑。不管怎样,这是代码。我对C#和StackOverflow很陌生,所以请容忍任何愚蠢的错误

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

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void panel1_DoubleClick(object sender, EventArgs e)
        {

        }

        private void panel1_Click(object sender, EventArgs e)
        {
            UserControl1.label1.Text = "Text";
        }


    }
}

label1是UserControl1中的私有成员,因此您无法在该类之外访问它

可能的解决办法:

一,。在
UserControl1
中创建公共属性

public string Title
{
    get {return label1.Text; }
    set {label1.Text = value; }
}
然后在表单中设置该属性

private void panel1_Click(object sender, EventArgs e)
{         
     UserControl1.Title = "Text";
}
二,。下面的代码也应该可以工作

 UserControl1.Controls["label1"].Text = "Text";

标签的“修改器”属性在“属性”窗口中可见,这很重要。它默认为Private。这将导致此错误,您无法访问私人成员。谢谢您的帮助。但是在两次尝试这两种解决方案之后,我没有收到任何语法错误,但是当我单击面板时,什么也没有发生。我觉得我可能忘记了将对象分配给类等。@shreadedwheat,尝试在
panel1\u单击
method中设置chechpoint,然后运行应用程序并单击panel1。检查点被击中了吗?在面板1中放置跟踪点并运行程序后,单击面板似乎没有击中跟踪点。@ShrededWheat,至少您可以尝试在构造函数中设置标题:
InitializeComponent();UserControl1.Title=“Text”
检查title属性是否正常工作。如果您在VisualStudio中工作,UserControl1.Title也应该在属性窗口的窗体设计器中可见