2016-12-12 6 views
0

私のアプリケーション用のフォームに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のpanel2に挿入されます。

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

あなたのコードは長く、読めません。変数名が混乱しています。プリム、ライトコンテナ、g_userlightgroups、getUserlightsなどとは何か...約1週間でそれを理解することさえ困難です。 –

+0

。私は問題を解決しました。これらは私のプロジェクトで使用する変数です。次回は、単純変数を使用して転記します。 – user7274707

答えて

0

panel2.Refresh()たぶん、あなたの問題を知らないが、あなたは、パネルをリフレッシュすることができます。

+0

パネル2のコントロールをクリアすることで解決することができます。入力に感謝します。 – user7274707

関連する問題