Добавление компонентов по нажатию

384
13 июня 2017, 23:52

Есть идея, но не знаю как реализовать. Хочу сделать что-то вроде программы для записок. Суть в том что все заключается в добавлении компонентов если мы хотим что-то добавить или написать. Внизу есть панель которая спрашивает что мы хотим добавить. Текст? Тогда нажимаем и появляется RichTextBox. Еще изображение? Тогда появляется PicrureBox после RichTextBox. Еще код? Тогда появляется FastColoredTextBox после PicrureBox. Если еще текст нужен, то еще один RichTextBox после FastColoredTextBox. Получается такой чат с самим собой. Вопрос в том, как создавать эти элементы на форме? Чтобы они где-то были скрыты, а мы при нажатии как бы клонировали их и вставляли.

Answer 1
void bKod_Click(object sender, EventArgs e)
{
    FastColoredTextBox fctb = new FastColoredTextBox();
    fctb.Width = this.Width;
    this.Controls.Add(fctb);
}
void bKartinka_Click(object sender, EventArgs e)
{
    Panel panel = new Panel();
    panel.Width = this.Width;
    PictureBox pb = new PictureBox();
    panel.Controls.Add(pb);
    this.Controls.Add(panel);
}
void bTekst_Click(object sender, EventArgs e)
{
    RichTextBox rtb = new RichTextBox();
    rtb.Width = this.Width;
    this.Controls.Add(rtb);
}

Заметка: Для FastColoredTextBox будете изпользовать 3rd party controls (SO или CodeProject FastColoredTextBox) или CustomControl

Answer 2

В чем, собственно, проблема? Например, при нажатии на кнопку пишете код:

Label label2 = new Label();
    label2.AutoSize = true;
    label2.Location = new System.Drawing.Point(41, 92);
    label2.Name = "label2";
    label2.Size = new System.Drawing.Size(35, 13);
    label2.TabIndex = 1;
    label2.Text = "label2";
    Controls.Add(label2);

Создается Label, который отрисуется на форме по координатам Point(41, 92). И можете так же создавать любой элемент. Можете присвоить каждому элементу все нужные свойства и прописать обработчики событий.

Если сильно нужно, создайте массив элементов object и все свои динамические элементы храните в нем. При желании, вы сможете обратиться к любому элементу и изменять его свойства и т.д...

READ ALSO
Windows UWP как запретить Pivot передвигать Header'э?

Windows UWP как запретить Pivot передвигать Header'э?

Создал Pivot табами и растянул эти табы по ширине окна, все бы ничего, но когда масштабирую окно эти табы начинают "прыгать", меняться местами(типо...

233
Формирование отчета в Visual Studio

Формирование отчета в Visual Studio

Есть программа для работы с бд, в которой присутствует функция добавления заказаПри добавлении заказа, нужно сформировать чек, который покажет...

473
Ошибка авторизации через Google api

Ошибка авторизации через Google api

При запуске стандартного кода из руководства по авторизации Google api

304