-2

コードで (「スペース」を残さずに) ツールバーを左揃えにする方法はありますか? ここに画像の説明を入力

(たとえば、button2 をクリックしたとき) ここに画像の説明を入力

PS
この状況も

ここに画像の説明を入力
「左揃え」とは、次のことを意味します。
ここに画像の説明を入力

4

2 に答える 2

0

アップデート

非常に劇的に変化する基準に基づいて、ここにいくつかのコードがあります。それは完璧ではなく、完璧に近いものでもありません!

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        _otherStrips = new List<OtherStrips>();
    }

    private int _currentHeight = 0;
    private List<OtherStrips> _otherStrips;

    private void button1_Click(object sender, EventArgs e)
    {
        foreach (var c in panel1.Controls)
        {
            if (c is ToolStrip)
            {
                ToolStrip ts = (ToolStrip)c;
                _otherStrips.Add(new OtherStrips() { Top = ts.Top, Width = ts.Width, Name = ts.Name });
                MoveToPosition(ts);
            }
        }
    }

    private void MoveToPosition(ToolStrip toolStrip)
    {
        bool isInline;
        toolStrip.Left = GetWidth(toolStrip, out isInline); 

        if (isInline)
            toolStrip.Top = GetTop(toolStrip);
    }

    private int GetWidth(ToolStrip ts, out bool isInline)
    {
        int result = 0;
        isInline = false;
        foreach (var item in _otherStrips)
        {
            if (item.Name == ts.Name)
                continue;

            if (item.Top == ts.Top)
            {
                isInline = true;
                break;
            }
        }

        if (!isInline)
            return result;

        foreach (var item in _otherStrips)
        {
            if (item.Width == ts.Width)
                result += item.Width;
        }

        return result + 22;//hack since the width is out by about 22pixels. Not going to spend any time fixing this
    }

    private int GetTop(ToolStrip ts)
    {
        foreach (var item in _otherStrips)
        {
            if (item.Name == ts.Name)
                continue;

            if (item.Top == ts.Top)
                return item.Top;
        }

        _currentHeight += ts.Height;
        return _currentHeight;
    }
}

struct OtherStrips
{
    public int Top { get; set; }
    public int Width { get; set; }
    public string Name { get; set; }
}
于 2013-05-14T10:41:33.570 に答える
0

これを使用して、ToolStrip を左揃えにすることができます

toolStrip1.Location = new Point(0, toolStrip1.Location.Y);
于 2013-05-14T11:09:28.383 に答える