从另一个表单控制按钮c#

时间:2016-11-29 06:57:23

标签: c# winforms

我有这个项目,您可以作为用户和员工登录,如果您以员工身份登录,某些按钮(如报告)将显示在主页上。

我有两个名为HomePagefrmSignIn的表单。如果用户从frmSignIn登录,我希望HomePage上的某个按钮可见。我尝试了几种方法,但无法让它发挥作用。

我确实按下按钮public以确定它是否有效,但我知道这是不好的做法。

if (ValidCredentials(txtUsername.Text, txtPassword.Text) == true && checkBoxEmployee.Checked == true && txtBoxEmpPin.Text.Equals(employeePin))
{
    this.DialogResult = DialogResult.OK;
    this.Tag = _usersId;
    this.Close();
    MessageBox.Show("You have successfully logged in as an employee.");

    HomePage hp = new HomePage();

    hp.Button.Visible = true;   // !!!! Does not work !!!!
}

3 个答案:

答案 0 :(得分:1)

实现此目的的一种方法是让您的原始主页为frmSignIn所知。

为此,您可以在frmSignIn中创建一个属性,如

public MyHomePage Form { get; set; }

然后,在创建SignIn表单时,还要将主页的引用添加到frmSignIn的新实例中。类似的东西:

var mySignInForm = new frmSignIn();
mySignInForm.MyHomePage = this;

现在,你在frmSignIn中有一个不错的参考来做你想做的事。你仍然需要公开按钮。

另外,您可以使用相同的方式添加对所需按钮的引用,而不是完整的表单。

这可能不是最漂亮和最优雅的解决方案,但它会起作用。

答案 1 :(得分:1)

您可以使用公共属性来保持对按钮的引用,请尝试此示例。

Form1

public partial class Form1 : Form
{



    public Form1()
    {
        InitializeComponent();

    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 x = new Form2();
        x.Button1 = this.button1;
        x.Show();
    }
}

窗体2

public partial class Form2 : Form
    {
        private Button _button1;

        public Button Button1
        {
            get { return _button1; }
            set { _button1 = value; }
        }

        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            _button1.Visible = false;
        }
    }

答案 2 :(得分:0)

homepage创建一个启用Button

的方法
public void EnableButton(){
   this.Button.Visible = true;
}

并且这样做,

this.DialogResult = DialogResult.OK;
this.Tag = _usersId;
HomePage hp = new HomePage();  //here, creating instance of homepage
hp.EnableButton(); //This enables the required button
MessageBox.Show("You have successfully logged in as an employee.");
hp.showDialog(); //Shows HomePage
this.Hide(); //Hides login page.