2016-11-17 22 views
0

サブメニューを含むToolStripMenuItemがあります。問題は、彼らが間違った場所に表示されていることである。enter image description hereToolStripMenuItemアイテムが不正な場所に表示される

私は上記の項目の私は、サブメニューに使用し、このコードを(これは溶液 - のためにあなたがReza ToolStripCombobox -Thankのためだった)持っていますが、私はそれは)(Control.Parent.GetTypeが含まれていないようToolStripMenuItemのために動作させるためで微調整に苦労して:

private void Form_Load(object sender, EventArgs e) 
    { 
     var item = toolStripComboBox; 
     var createControl = item.Control.Parent.GetType().GetMethod("CreateControl", 
      System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); 
     createControl.Invoke(item.Control.Parent, new object[] { true }); 

はいつものように、任意のヘルプは高く評価されています。

+1

これはwinformsですか? – Jim

+0

こんにちはジム、そうです。 – Pucho

+1

あなたはUIフレームワークを使用していますか? – Jim

答えて

0

あなたの問題の根本は、フォームコンストラクタの代わりにフォームロードイベントハンドラを使用することだと思います。次のコードを実行すると、フォームがロードされるときにメニュー項目が正確に正しい場所に表示されます。

public Form1() 
{ 
    InitializeComponent(); 
    ToolStripComboBox item1 = new ToolStripComboBox(); 
    item1.Items.AddRange(new object[] 
    { 
     "One", 
     "Two", 
     "Thtree" 
    }); 
    item1.DropDownStyle = ComboBoxStyle.Simple; 
    menuStrip1.Items.Add(item1); 
    ToolStripMenuItem item2 = new ToolStripMenuItem(); 
    item2.Text = "Four"; 
    menuStrip1.Items.Add(item2); 
} 
+0

なぜ私はtinstaafiが問題なくメニューをレンダリングできるのかを知るために同じアプリケーションをゼロから作成するよう促したので、これを受け入れられた答えとしてマークしています。多少なりとも、何らかの形で新しいフォームが問題なくすべてのアイテムを表示するので、何かが元のフォームに混乱しています。 – Pucho

関連する問題