用户控制中的访问方法虽然公开,但是不可能

时间:2013-06-03 12:06:42

标签: c# .net winforms methods user-controls

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

我要做的是访问用户控件中的方法。

我做了什么:设置用户控件" 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"添加了#34;。我遗漏了一些代码,其中创建了一个新选项卡,并在此选项卡中显示了用户控件。这样工作正常,因此用户控件存在并且有效,只是我似乎无法访问这些方法。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您的变量属于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");
        }

OR

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

答案 1 :(得分:1)

您尝试呼叫SetName的方法名称为SetText。并将UserControl lab =更改为var lab =TabContent.TabContent lab =