2016-11-17 3 views
0

선택할 하위 메뉴가 포함 된 ToolStripMenuItem이 있습니다. 문제는 그들이 잘못된 위치에 표시되어 있습니다 : enter image description hereToolStripMenuItem 항목이 잘못된 위치에 표시됩니다.

나는 위의 항목의 (이것은 솔루션 -의 ToolStripComboBox의 고마워요 Reza 위해이었다) 하위 메뉴에 사용이 코드를 가지고 있지만 난 그것은) (A 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

관련 문제