0

選択するサブメニューを含む ToolStripMenuItem があります。問題は、それらが間違った場所に表示されていることです:ここに画像の説明を入力

上記の項目のサブメニューに使用したこのコードがあります (これは ToolStripCombobox 用でした -解決策を提供してくれたRezaに感謝します)。 Control.Parent.GetType() が含まれています:

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 });

いつものように、どんな助けも大歓迎です。

4

1 に答える 1

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);
}
于 2016-11-17T01:29:19.087 に答える