Как сделать так, чтобы кнопка была сразу после label любой длины
Допустим есть label, туда выводится текст, мне нужно, чтобы сразу после этого текста была кнопка. Например добавил я кучу слов и чтобы был батон в конце этого (Возможно это глупо, но такова моя хотелка). Как вариант меня сейчас просвятило немного, я мог бы добавить кнопку в конце и если текст будет слишком большой, когда он дойдет до кнопки, то он станет, допустим "StackOverfl..."Button. Вот так вот.
Ответы (2 шт):
Нашел такой выход:
button4.Location = new Point(label5.Size.Width, button4.Location.Y);
Вроде все работает так как я хотел.
Если нужно сделать, чтобы текст не уходил за рамки формы, то нужно указать в свойствах лейбла AutoSize = false и AutoEllipsis = true. AutoSize сделает лейблу границу, а AutoEllipsis сделает так, что когда текст дойдет до границы в конце текста будет троеточие.
Можно применить способ, который общепринят в большинстве GUI-фреймворков. Вкладываем контролы в базовый, наподобие сетки. И настраиваем автоматическое изменение размеров и подстройку под них.
using System.Windows.Forms;
namespace WinForms
{
public partial class Form1 : Form
{
private Button button;
private Label label;
private TextBox textBox;
private TableLayoutPanel tableLayoutPanel;
public Form1()
{
//InitializeComponent();
textBox = new TextBox { Parent = this, Top = 50 };
tableLayoutPanel = new TableLayoutPanel { Parent = this, ColumnCount = 2, RowCount = 1, AutoSize = true, AutoSizeMode = AutoSizeMode.GrowAndShrink };
label = new Label { Parent = tableLayoutPanel, AutoSize = true, Margin = new Padding(0, 5, 0, 0), };
button = new Button { Parent = tableLayoutPanel, Left = label.Right, Margin = new Padding(0) };
label.DataBindings.Add(nameof(Label.Text), textBox, nameof(TextBox.Text));
}
}
}
Здесь создаётся TableLayoutPanel, в него помещается Label и Button. У TableLayoutPanel заданы две колонки и одна строка. Задано автоматическое изменение размеров.
Label тоже с автоматическим изменением размеров. Когда он расширяется или сжимается, он изменяет ширину колонки TableLayoutPanel, при этом кнопка во второй колонке тоже сдвигается.
Полезная ссылка: Walkthrough: Arranging Controls on Windows Forms Using a TableLayoutPanel. И слева в меню смотрите ссылки.
