C# 用户控件中的访问方法不可能,尽管是公共的

C# 用户控件中的访问方法不可能,尽管是公共的,c#,.net,winforms,methods,user-controls,C#,.net,Winforms,Methods,User Controls,这似乎是一个简单的问题,我可以在这里找到一些与之相关的帖子,不幸的是,这些帖子最终对我没有帮助 我试图做的是访问用户控件中的方法 我所做的:设置用户控件“TabContent”,如下所示: namespace TabContent { public partial class TabContent : UserControl { public TabContent() { InitializeComponent();

这似乎是一个简单的问题,我可以在这里找到一些与之相关的帖子,不幸的是,这些帖子最终对我没有帮助

我试图做的是访问用户控件中的方法

我所做的:设置用户控件“TabContent”,如下所示:

namespace TabContent
{
    public partial class TabContent : UserControl
    {
        public TabContent()
        {
            InitializeComponent();
        }

        public void SetName(string tabname)
        {
            show_name.Text = tabname; //show_name is a label
        }

    }
}
现在我正在尝试从我的主应用程序访问它:

using TabContent;

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

        private void buttonItem1_Click(object sender, EventArgs e)
        {
            UserControl lab = new TabContent.TabContent();            
            lab.Dock = DockStyle.Fill;
            lab.SetText("hallo");
        }
    }
}
问题是方法SetText()是未知的,尽管它被定义为public,并且我还添加了“使用TabContent”。我遗漏了一些代码,其中创建了一个新选项卡,并且用户控件显示在此选项卡中。这很好,所以用户控件存在并工作,只是我似乎没有访问这些方法的权限


谢谢你的帮助

方法名是您试图调用的
setxt
。并将
usercontrollab=
更改为
var lab=
TabContent.TabContent lab=
方法名为
SetName
您试图调用的
SetText
。并将
UserControl lab=
更改为
var lab=
TabContent.TabContent lab=
您的变量类型为
UserControl
,它没有
SetName
方法。使用
var
功能或将变量设置为显式类型
TabContent.TabContent

private void buttonItem1_Click(object sender, EventArgs e)
        {
            var lab = new TabContent.TabContent();            
            lab.Dock = DockStyle.Fill;
            lab.SetName("hallo");
        }


变量的类型为
UserControl
,它没有
SetName
方法。使用
var
功能或将变量设置为显式类型
TabContent.TabContent

private void buttonItem1_Click(object sender, EventArgs e)
        {
            var lab = new TabContent.TabContent();            
            lab.Dock = DockStyle.Fill;
            lab.SetName("hallo");
        }


因为您将实验室声明为UserControl,而它没有SetText/SetName方法。将该行更改为var lab=new TabContent.TabContent();因为您将实验室声明为UserControl,而它没有SetText/SetName方法。将该行更改为var lab=new TabContent.TabContent();我认为否决票也没有必要。我在这个答案中添加了建议的文本,当我的项目看起来像原始项目时,我可以演示编译器错误,这是由这个答案中的建议修复的。谢谢你的帮助,也谢谢你指出拼写问题。我认为否决票也没有必要。我在这个答案中添加了建议的文本,当我的项目看起来像原始项目时,我可以演示编译器错误,这是由这个答案中的建议修复的。谢谢你的帮助,也谢谢你指出拼写问题。谢谢,这确实解决了问题,现在它正在按预期工作!谢谢,这确实解决了问题,现在它正在按预期工作!