使用不同形式的控件C#

时间:2015-02-28 11:21:32

标签: c# winforms

我正在为一所学校的项目工作,并且有一些逻辑错误。 我有两种不同的形式:frmOrders和frmCustomers。 frmOrders是主要形式,当我点击这里的按钮时,frmCustomers将显示。 frmCustomers中有一个名为txtTable的数据网格。

现在,我要做的是当我双击一行时,某些信息会出现在frmOrders的某些文本框中,然后frmCustomers关闭。此外,我希望禁用frmCustomers中的其余控件。 (我已经将frmCustomers中控件的访问修饰符设置为公共,但它似乎无法正常工作。)我该怎么做?

目前这是我的代码:

 public partial class frmOrders : Office2007Form
{
    public frmOrders()
    {
        InitializeComponent();
    }

    private void frmOrders_Load(object sender, EventArgs e)
    {

    }

    private void btnCustomer_Click(object sender, EventArgs e)
    {
        frmCustomers c = new frmCustomers();

        c.ShowDialog();
        c.txtAddress.Enabled = false;
        c.txtBday.Enabled = false;
        c.txtContactNo.Enabled = false;
        c.txtFname.Enabled = false;
        c.txtLname.Enabled = false;
        c.txtMI.Enabled = false;
        c.txtSearch.Enabled = false;
        c.btnDelete.Enabled = false;
        c.btnSave.Enabled = false;
        c.btnUpdate.Enabled = false;

    }               
}

1 个答案:

答案 0 :(得分:0)

我猜您的按钮,文本字段等是frmCustomers表单代码(frmCustomers.Designer.cs)中的私有字段,因此无法从其他表单访问它们。您可以将控件公开(我不建议),也可以在表单(frmCustomers)中添加公共方法来设置属性,并可以从frmOrders访问。

例如(在你的frmCustomers代码中):

public void SetControlsEnabled() 
{
    txtAddress.Enabled = false;
    txtBday.Enabled = false;
    txtContactNo.Enabled = false;
    ...
}

但只要您使用ShowDialog()调用表单,下面的代码就不会执行,因为它等待表单关闭(并返回一个DialogResult)。

所以这样做

frmCustomers c = new frmCustomers();
c.SetControlsEnabled();
c.ShowDialog();

希望这有帮助!