2015-01-30 4 views
1

enter image description here ^^^ Fixed Layout ^^^Как я могу добавить текстовое поле динамически под другим, нажав кнопку в C#? (WinForms)

enter image description here Изображение реконструкция в Excel (я не имею код под рукой прямо сейчас)

Вопрос 1: Как добавить текстовое поле под другое динамическое (желтые текстовые поля для справки), нажав кнопку «Добавить ингредиент»?

Вопрос 2: Можно ли использовать более простой метод вместо добавления текстовых полей? (тип кода ячейки/строки)

+4

Заканчивать DataGridView –

+0

@WayneScicluna проверить '' в DataGridView .. есть много примеров в Интернете для этого здесь ссылки, чтобы помочь вам начать работу https: // социальных. msdn.microsoft.com/Forums/vstudio/en-US/4a173a0f-1453-4e51-a29d-e5b4226f4679/dynamically-add-gridview-columns-and-buttons?forum=csharpgeneral – MethodMan

+0

Всегда указывайте платформу, на которую вы нацеливаете: WPF , ASP, Winforms ..! – TaW

ответ

3

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

Например:

  1. Добавить «ListView» -контроль в форму
  2. Изменить вид вашего ListView в «Подробнее», чтобы отобразить список как таблица
  3. Добавьте 4 столбца в ListView (идентификатор, наименование, количество, цена)
  4. Создать-структуру для хранения данных (идентификатор, имя, ...)
  5. Добавить общий список вашей структуры (например, "Список списка = новый L ist() ") (переменная экземпляра класса)
  6. Добавить элементы в список (" list.AddItem ([...]) ")
  7. Привязать список как источник данных.
0

Вы можете использовать ListView, а затем вставить или Добавить. Как получить столбцы? Добавить ListView, а затем, когда в "Main_Load", добавьте следующий код:

void Main_Load(object sender, EventArgs e) 
{ 
    listView.View = View.Details; 
    listView.Columns.Add("Ingredients", 100, HorizontalAlignment.Center); 
    listView.Columns.Add("Amount", 100, HorizontalAlignment.Center); 
    listView.Columns.Add("Cost", 100, HorizontalAlignment.Center); 
} 

void _btnAddIngredients(object sender, MouseEventArgs e) 
{ 
    listView.Items.Add("Add Text Here"); 
} 
1

enter image description here

Так мне удалось это сделать с помощью DataGridView.

public void AddItemToTable() 
    { 
     int idOfItem; 
     string[] details = ItemCombo.Text.Split(','); //ItemCombo = combo box 
     idOfItem = int.Parse(details[0]); 

     int n = dataGrid.Rows.Add(); 
     dataGrid.Rows[n].Cells[0].Value = Vars.itemName[idOfItem]; 
     dataGrid.Rows[n].Cells[1].Value = InputValueBox.Text + " " + Vars.itemScale[idOfItem]; 
     dataGrid.Rows[n].Cells[2].Value = "€" + ((Vars.itemPrice[idOfItem]/Vars.itemBundle[idOfItem]) * double.Parse(InputValueBox.Text)).ToString("F4"); 
    }