来自usercontrol的表单调用方法

时间:2013-03-26 06:53:41

标签: c# forms user-controls

在usercontrol中,我有一些对象(textboxcombobox等)。在表单中,我有一个按钮,用于显示或隐藏usercontrol中的某些对象。我试图从usercontrol调用该方法,但它不起作用。我的代码:

用户控件:

public void MinimMaxim()
{
    _txtName.Visible = true;
    _txtPackage.Visible = true;
    _panelButton.Visible = false;
    _txtBody.Visible = false;
    _btnPlus.Visible = false;
} 

并以表格形式:

//method that creates taskcontrols at every button click
private void _buttonAdd_Click(object sender, EventArgs e)
{
    TaskControl task= new TaskControl();
}
//call function from usercontrol
private void button_Click(object sender, EventArgs e)
{
    task.MinimMaxim = true;
}

4 个答案:

答案 0 :(得分:4)

通过用户控件>>

引用以下代码来调用方法
yourUserControlName.methodName();

我认为在您的情况下可能是:

yourUserControlName.MinimMaxim();

答案 1 :(得分:3)

您创建的

任务变量是_buttonAdd_Click方法的局部变量。无法从任何其他方法访问它。如果您希望从其他方法使用它,它必须是成员变量。

答案 2 :(得分:2)

要访问用户控件中的控件,我通常会公开该控件的一些属性,并且从主页面我可以使用属性来控制。

答案 3 :(得分:2)

我尝试过Freelancer的答案,但它确实奏效了。

用户控制类

using System;
using System.Windows.Forms;

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

    private void UserControl1_Load(object sender, EventArgs e)
    {

    }

    public void MinimMaxim()
    {
        _txtName.Visible = true;
        _txtPackage.Visible = true;
        _panelButton.Visible = false;
        _txtBody.Visible = false;
        _btnPlus.Visible = false;
    } 
}

}

表单类

using System;
using System.Windows.Forms;

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

    private void button1_Click(object sender, EventArgs e)
    {
        userControl11.MinimMaxim();
    }
}

}

如果我们在运行时创建此UserControl,答案是;

using System;
using System.Windows.Forms;

namespace SOF_15631067
{
    public partial class Form1 : Form
    {
        UserControl1 uc1 = new UserControl1();
    public Form1()
    {
        InitializeComponent();

        **Controls.Add(uc1);**
    }

    private void button1_Click(object sender, EventArgs e)
    {
        uc1.MinimMaxim();
        // userControl11.MinimMaxim();
    }
}

}