Преобразование ячеек в DataGridView в комбинированные списки и обратно: это хороший код? - PullRequest
0 голосов
/ 07 февраля 2020

В 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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...