Как сделать так, чтобы кнопка была сразу после label любой длины

Допустим есть label, туда выводится текст, мне нужно, чтобы сразу после этого текста была кнопка. Например добавил я кучу слов и чтобы был батон в конце этого (Возможно это глупо, но такова моя хотелка). Как вариант меня сейчас просвятило немного, я мог бы добавить кнопку в конце и если текст будет слишком большой, когда он дойдет до кнопки, то он станет, допустим "StackOverfl..."Button. Вот так вот.

Пример написанный от руки


Ответы (2 шт):

Автор решения: VillyFiki

Нашел такой выход:

button4.Location = new Point(label5.Size.Width, button4.Location.Y);

Вроде все работает так как я хотел.

Если нужно сделать, чтобы текст не уходил за рамки формы, то нужно указать в свойствах лейбла AutoSize = false и AutoEllipsis = true. AutoSize сделает лейблу границу, а AutoEllipsis сделает так, что когда текст дойдет до границы в конце текста будет троеточие.

→ Ссылка
Автор решения: Alexander Petrov

Можно применить способ, который общепринят в большинстве 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. И слева в меню смотрите ссылки.

→ Ссылка