在左侧面板上单击菜单项时,右侧面板中的表单不会更新

时间:2016-12-12 23:15:12

标签: c# winforms

我已在表单中添加了splitcontainer以供我的应用程序使用。基本上,我在左侧面板中有多个按钮,每个按钮都有动态添加的下拉菜单项。单击某个项目时,它会在右侧面板中显示带有更新值(在标签中)的常用表单。单击一个菜单项时,它第一次正常工作。但是在下一次单击另一个菜单项时,会显示旧表单详细信息,该表单应该是一个带有更新标签值的表单。我遇到的问题是表单没有更新标签值。我在网上找不到这个问题。非常感谢任何帮助。

Splitcontainer表格;

public int lightIndex
{
    get { return _lightindex; }
    set { _lightindex = value; }
}

public int groupIndex
{
    get { return _groupindex; }
    set { _groupindex = value; }
}

按钮点击事件

private void button_Click(object sender, EventArgs e)
{
    Button btnSender = (Button)sender;
    groupIndex = groupbuttons.IndexOf((Button)sender);
    ContextMenu cm = new ContextMenu();
    List<UserLight> alllight = Global.g_userlightgroups[_groupindex].getUserlights();

    for (int i = 0; i < alllight.Count(); i++)
    {
        ContextMenu = cm;
        MenuItem item = new MenuItem(alllight[i].getlightType().ToString());
        item.Click += Item_Click;
        cm.MenuItems.Add(item);
    }

    Point ptLowerLeft = new Point(0, btnSender.Height);
    ptLowerLeft = btnSender.PointToScreen(ptLowerLeft);
    cm.Show(btnSender, ptLowerLeft);
}

private void Item_Click(object sender, EventArgs e )
{
    MenuItem menuItem = (MenuItem)sender;
    String lighttype = menuItem.Text;

    if (lighttype.Equals("PRIMITIVE"))
    {
        PrimitiveLight prim = new PrimitiveLight();
        prim.TopLevel = false;
        prim.Parent = lightcontainer.Panel2;

        prim.groupIndex = _groupindex;
        prim.lightIndex = menuItem.Index;
        prim.Show();
        prim.Dock = DockStyle.Fill;
    }
}

PrimitiveLight表单:单击菜单项时,此表单将插入splitcontainer面板2中。

private int _lightindex;
private int _groupindex;

public int lightIndex
{
    get { return _lightindex; }
    set { _lightindex = value; }
}
public int groupIndex
{
    get { return _groupindex; }
    set { _groupindex = value; }
}

private void PrimitiveLight_Load(object sender, EventArgs e)
{
    lightDefname.Text = Global.g_userlightgroups[_groupindex].getUserlights().ElementAt(_lightindex).getdefName().ToString();
    lightCustname.Text = Global.g_userlightgroups[_groupindex].getUserlights().ElementAt(_lightindex).getcustName().ToString();
}

1 个答案:

答案 0 :(得分:0)

panel2.Refresh()也许,不知道你的问题,但你可以刷新面板。