Есть ли способ левого выравнивания панелей инструментов (не выходя из «пробелов») по коду? Слева выровняйте панели инструментов по коду
(например, при нажатии на button2)
PS
Кроме того, эта ситуация
К "выравнивание по левому краю" означает:
Есть ли способ левого выравнивания панелей инструментов (не выходя из «пробелов») по коду? Слева выровняйте панели инструментов по коду
(например, при нажатии на button2)
PS
Кроме того, эта ситуация
К "выравнивание по левому краю" означает:
Update
Основываясь на ваших критериях, изменяющихся довольно резко, вот какой-то код, который заставит вас идти. Он не идеален и не близок к совершенству!
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; }
}
Вы можете использовать это, чтобы осталось выровнять ToolStrip
toolStrip1.Location = new Point(0, toolStrip1.Location.Y);
Выровнять слева Панели инструментов означает, что Вы должны изменить ПОлОжЕНИЕ MenuStrip что-то подобное.? –
Мне нужно, чтобы панели инструментов с первого изображения были выровнены как панели инструментов во втором изображении. – serhio
Просто чтобы я мог убедиться, что понял эту проблему, не так ли, когда вы пристыковываете (DockStyle), вы не можете применить ширину? И как таковая, ширина намного шире, чем хотелось бы. – Dave