2017-06-17 6 views
0

私の学校でのプロジェクトでは、メニューを持つウィンドウとプログラムを作成しなければならず、そのメニューではドロップダウンメニューが必要です。 ドロップダウンメニューは機能しますが、私はそれを私のウィンドウの下部に入れることはできません。ここ は私のコードです:C#のドロップダウンメニュー

var MenuWindow = new Form(); 
    MenuWindow.Height = 300; 
    MenuWindow.Width = 300; 
    MenuWindow.Text = "Menu"; 

    ToolBarButton Numbers = new ToolBarButton("Number of players");       
    ToolBar DropDownMenu = new ToolBar();           
    MenuItem menuItem1 = new MenuItem("1"); 
    MenuItem menuItem2 = new MenuItem("2");        
    ContextMenu ContentsOfMenu = new ContextMenu(new MenuItem[] { menuItem1, menuItem2 }); 
    DropDownMenu.Buttons.Add(Numbers); 
    Numbers.Style = ToolBarButtonStyle.DropDownButton; 
    Numbers.DropDownMenu = ContentsOfMenu; 
    DropDownMenu.Left = 95; 
    DropDownMenu.Top = 215; 
    DropDownMenu.Width = 100; 
    DropDownMenu.Height = 10; 

    MenuWindow.Controls.Add(DropDownMenu); 

    MenuWindow.Show(); 

私は高さ、幅、左と上の座標を追加しようとしました見ることができるように。しかし、これは、このドロップダウンメニューの位置とは何の違いもありませんでした。 ToolBarとToolStripを使用していて、結果は同じです。私はボタン/ドロップダウンメニューの位置を移動することはできません。

また、コードを改善する方法についてご意見がありましたら、こちらのC#の初心者で行ってください。

+0

これは手動でコードする必要がありますか? Visual Studioを使ってこれを視覚的にデザインしていないのはなぜですか? –

+0

ツールバーは、ウィンドウの上部に属していると想定されています。 DockプロパティをDockStyle.None –

+0

@AZhitomに設定する必要があります。あなたの "linqpad"タグを削除します。プロジェクトにそのツールを使用しているかもしれませんが、あなたの質問にはあまり関係ありません。皮肉なことに、それは私をここに導いたタグです。 – pwilcox

答えて

0

最初に考慮する必要があるのは、変数「DropDownMenu」の名前が誤解を招くことです。その変数はツールバーであり、ドロップダウンメニューではありません。実際にフォームのドロップダウンから選択しているときは、使用しているコントロールは「数値」です。 "Numbers"は実際には "DropDownMenu"と呼ばれるべきものです。

これを考えると、実際にはツールバーであるため、ツールバーの上部および左のプロパティを変更できないと考えられます。ツールバーはコンテナの極端なところに移動するだけです。真ん中に置くのは決して意味がありません。彼らがこのプロパティを持っていることさえ奇妙ですが、私はそれが "Control"から継承されていることを推測しています。レンダリングエンジンは、これらのプロパティを単純に無視する必要があります。あなたが本当にこれを持っている必要があるなら、あなたの質問の下でHans Passantのコメントを見てください。

Windowsフォームコントロールではあまり機能しませんが、通常は「ComboBox」を使用する可能性が高いと思います。コンボボックスをフォーム上にまっすぐに置いて、ツールバーをバイパスします。このように:

var label = 
    new Label() { 
     Text = "Players", 
     Top = 20, 
     Left = 20, 
     Width = 75 
    }; 

var combo = 
    new ComboBox() { 
     Left = label.Left + label.Width, 
     Top = label.Top, 
     Width = 150, 
     Height = 10   
    }; 

combo.Items.Add("1"); 
combo.Items.Add("2"); 

var MenuWindow = 
    new Form() { 
     Height = 100, 
     Width = 300, 
     Text = "Menu" 
    }; 

MenuWindow.Controls.Add(combo); 
MenuWindow.Controls.Add(label); 

MenuWindow.Show(); 

また、あなたは新しいので、別のスタイルに注意してください。それは特に良いことではありませんが、それについて知る価値はあります。このようにプロパティを設定すると、物事をより良く一緒にブロックするのに役立ちます。また、あなたが持っている変数の種類が痛いときは、 "var"キーワードを使うのが大丈夫です。たとえば、コンボがコンボボックスであることは非常に明確です。したがって、私はちょうど "var"を使用します。それが少し不明な場合は、実際のタイプを書き出してください。

関連する問題