В DataGridView мне нужно часто создавать и уничтожать комбинированные списки. Меня беспокоит эффективное использование ресурсов, возможные утечки памяти и т. Д. c. Следующий игрушечный код преобразует ячейки назад и вперед между текстовыми полями или комбинированными списками при нажатии кнопки, расположение, выбранное в textBox1. Представьте, что кто-то нажимает на кнопки весь день, преобразовывая поля назад и вперед (или, может быть, другой метод делает это несколько раз в секунду). Приведет ли это к большому использованию памяти или другим проблемам с производительностью? Я просто не уверен, что DataGridView делает со старыми ящиками, не уверен, что правильно избавляюсь от старых вещей. Или DGV позаботится обо всем этом автоматически?
Редактировать: очевидно, это не приложение в виду, а игрушечная модель с функциональным кодом, призванным проиллюстрировать проблему.
Этот размер этих (100-200) строк примерно соответствует размеру dgv, с которым я буду иметь дело.
public partial class Form1 : Form
{
DataGridView dgv = new DataGridView();
public Form1()
{
InitializeComponent();
DataGridViewTextBoxColumn dgcol = new DataGridViewTextBoxColumn();
this.Controls.Add(dgv);
dgv.Dock = DockStyle.Right;
dgv.Columns.Add(dgcol);
dgv.Rows.Add(100);
}
private void button1_Click(object sender, EventArgs e) //make a box a combobox
{
int row = Int32.Parse(this.textBox1.Text);
DataGridViewComboBoxCell newcombobox = new DataGridViewComboBoxCell();
newcombobox.DataSource = new List<string> { "yellow", "green" };
this.dgv[0, row].Dispose();
this.dgv[0, row] = newcombobox;
}
private void button2_Click(object sender, EventArgs e)// make a box a textbox
{
int row = Int32.Parse(this.textBox1.Text);
DataGridViewTextBoxCell newtextbox = new DataGridViewTextBoxCell();
this.dgv[0, row].Dispose();
this.dgv[0, row] = newtextbox;
}
}
}