MenuItems单击

时间:2016-02-01 09:50:44

标签: c# winforms

我有Right-click个菜单项,sub menu items。我想要做的是,如果单击3个子菜单项之一,它将打开相同的表单,但传递不同的变量。 子菜单项; 1-经理 2-工作人员 3-客户

无论选择哪一个,都应将名称,即经理,员工或客户传递给一个表格。

由于

编辑1: 主要表格

        if (e.Button == MouseButtons.Right)
        {
            ContextMenu m = new ContextMenu();
            MenuItem Message = new MenuItem("Message", Message_Click);
            Message.MenuItems.Add(new MenuItem("Manager", Manager_Click));
            Message.MenuItems.Add(new MenuItem("-"));
            Message.MenuItems.Add(new MenuItem("Staff", Staff_Click));
            Message.MenuItems.Add(new MenuItem("Customer", Customer_Click));


        }


 private void Manager_Click(object sender, EventArgs e)
    {
      FrmMessage frmMessage = new FrmMesage();

        frmMessage.ShowDialog();
       frmMessage.Dispose();
    }

    private void Staff_Click(object sender, EventArgs e)
    {
        FrmMessage frmMessage = new FrmMesage();

        frmMessage.ShowDialog();
       frmMessage.Dispose();
    }

    private void Customer_Click(object sender, EventArgs e)
    {
       FrmMessage frmMessage = new FrmMesage();

        frmMessage.ShowDialog();
       frmMessage.Dispose();
    }

讯息表格;

 private void PopulateFields()
    {

        txtMessage.Text = Company.ManagerName.ToString();
        OR
        txtMessage.Text = Company.StaffName.ToString();
        OR 
        txtMessage.Text = Company.CustomerName.ToString();


    }

编辑2:

我有2 forms,第一个表单有datagrid,在此数据网格上有上面的MenuItems。在第二个form上,他们是3 TextBoxes - ToFromMessage,以MenuItem - Manager为准,{{1}选择Staff,它将使用经理或员工或客户的名称填充Customer To,但不会这样做。这是我的问题更明确吗?

由于

1 个答案:

答案 0 :(得分:2)

你有几个选择。

您可以将FrmMesage继承为三个专门针对每种类型的特定子类。

public class FrmMesageManager : FrmMesage { /* with appropriate overrides */ }

public class FrmMesageCustomer : FrmMesage { /* with appropriate overrides */ }

public class FrmMesageStaff : FrmMesage { /* with appropriate overrides */ }

然后你做:

private void Manager_Click(object sender, EventArgs e)
{
    FrmMessageManager frmMessage = new FrmMessageManager();

    frmMessage.ShowDialog();
    frmMessage.Dispose();
}

...等

或者您可以向FrmMesage

添加构造函数
public partial class FrmMesage
{
    private string _user;
    public FrmMesage(string user)
    {
        _user = user;
    }
}

然后你做:

private void Manager_Click(object sender, EventArgs e)
{
    FrmMessage frmMessage = new FrmMessage("Manager");

    frmMessage.ShowDialog();
    frmMessage.Dispose();
}

或者您可以将公共属性添加到FrmMesage

public partial class FrmMesage
{
    private string User { get; set; }
}

然后你做:

private void Manager_Click(object sender, EventArgs e)
{
    FrmMessage frmMessage = new FrmMessage();

    frmMessage.User = "Manager";

    frmMessage.ShowDialog();
    frmMessage.Dispose();
}