1

というPanelオブジェクトがありますdockTop。said に 2 つのラベルを追加しPanelます。ラベルを左から右に流したい。divこれは、css が設定されている場合に期待されるものに似ていfloat: leftます...これだけが winforms です。

私は持っている

   //I want DockStyle.Left, but that causes both controls to be of height, width = 0,0
   dockTop.Controls.Add(new Label() { Text = "one", Dock = DockStyle.Top });
   dockTop.Controls.Add(new Label() { Text = "two", Dock = DockStyle.Top }); 

Dock Top は問題なく動作しますが、それは私が望んでいるものではありません。ドックトップに設定されたパネル内でラベルを左から右に並べて表示するにはどうすればよいですか?

4

3 に答える 3

0

私はResizeイベントを使用してこのタスクを達成します。お役に立てば幸いです。

static class Program
{
    static Label label1;
    static Label label2;
    static Form form1;
    static Rectangle rectForm;
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        form1 = new Form();
        rectForm = form1.ClientRectangle;
        Panel dockTopPanel = new Panel {Height = 100, Dock = DockStyle.Top, BackColor = Color.White };
        label1 = new Label { Text = "Label1", Dock = DockStyle.Left, BackColor = Color.Red, Width = rectForm.Width / 2 };
        label2 = new Label { Text = "Label2", Dock = DockStyle.Right, BackColor = Color.Blue, Width = rectForm.Width / 2 };
         label2.BringToFront();
        Control[] labels= {label1, label2};
        dockTopPanel.Controls.AddRange(labels);
        form1.Controls.Add(dockTopPanel);
        form1.Resize += new EventHandler(form1_Resize);
        Application.Run(form1);
    }

    static void form1_Resize(object sender, EventArgs e)
    {
        rectForm = form1.ClientRectangle;
        label1.Width = (rectForm.Width / 2) + 1;
        label2.Width = (rectForm.Width / 2) + 1;
    }
}
于 2013-01-04T23:50:20.250 に答える
0

に設定Dockする必要がDockStyle.TopありますDockStyle.Left

   dockTop.Controls.Add(new Label {Text = "one", Dock = DockStyle.Top | DockStyle.Left });
   dockTop.Controls.Add(new Label { Text = "two", Dock = DockStyle.Top | DockStyle.Left });

ここに画像の説明を入力

またはあなたが使用することができAutoSizeますDockStyle.Left

   dockTop.Controls.Add(new Label {Text = "one", Dock = DockStyle.Left, AutoSize=true });
   dockTop.Controls.Add(new Label { Text = "two", Dock =  DockStyle.Left, AutoSize = true});

ここに画像の説明を入力

于 2013-01-04T22:28:31.310 に答える