На основании вашего ответа, что вы используете WinForms. Сначала очень простой пример, а затем небольшое обсуждение вопросов для рассмотрения на основе «типичных» сценариев использования.
Вот конкретный пример, где в ответ на щелчок по кнопке во время выполнения создается новый DataGridView, помещается в форму, размер и т. Д.:
// declare a form scoped variable to hold a reference
// to the run-time created DataGridview
private DataGridView RunTimeCreatedDataGridView;
// sample of creating the DataGridView at run-time
// and adding to the Controls collection of a Form
// and positioning and sizing
// fyi: the Form used here is sized 800 by 600
private void button1_Click(object sender, EventArgs e)
{
RunTimeCreatedDataGridView= new DataGridView();
RunTimeCreatedDataGridView.Size = new Size(300, 542);
RunTimeCreatedDataGridView.Location = new Point(10,12);
this.Controls.Add(RunTimeCreatedDataGridView);
}
Конечно, вы можете упростить настройку размера и местоположения, используя свойство Bounds или метод SetBounds, как в:
RunTimeCreatedDataGridView.SetBounds(10,12,300,542);
Возможно, вы захотите установить другие свойства, которые автоматически определяют размер и местоположение, установив свойства Dock или Anchor.
И вам, вероятно, захочется «настраивать» внешний вид DataGridView другими способами, добавляя вызовы для установки BackGroundColor, BorderStyle и т. Д. В приведенный выше код.
К этому времени я надеюсь, что вы думаете о чем-то вроде: "как насчет действительно важных вещей, таких как настройка столбцов, привязка данных и т.д.?" Как насчет всей этой замечательной функциональности, предоставляемой в DesignTime «Смарт-тегом» в правом верхнем углу DataGridView и в окне обозревателя свойств.
Здесь мы получаем общее, а не конкретное.
Если вы «уверены», что в какой-то момент пользователь во время выполнения захочет создать DataGridView: почему бы не создать его заранее: визуально оформить его, создать столбцы и т. Д., А затем скрыть, когда Форма нагрузки: затем показать по требованию.
Если вам абсолютно необходимо создать DataGridView с нуля во время выполнения, но вы хотите избежать многократного ввода: сначала создайте DataGridView во время разработки, перейдите в файл Designer.cs и скопируйте автоматически сгенерированный код, который полезно для визуального стиля, добавления и настройки столбцов: затем вставьте этот код в метод или событие, где вы создаете DataGridView (да, вам нужно немного его настроить).
Поскольку в этом случае мы ничего не знаем о том, с чем вы могли бы или не могли связывать DataGridView, мы просто будем молчать об этом.
В (нечетном? Выключенном?) Маловероятном случае, когда вы создаете несколько DataGridViews во время выполнения, предложите вам поддерживать их внутренний список в переменной типа List<DataGridView>
и иметь одну переменную с именем currentDataGridView
, которую может полагаться на то, что удерживает ссылку на активный в данный момент (имеет фокус, видим и т. д.) DataGridView.
В каждом случае я рекомендую использовать «возиться» с DataGridView в режиме времени разработки, а затем исследовать код, созданный в файле Designer.cs (но никогда не меняя его!), Чтобы получить быструю информацию о том, как использовать различные особенности DataGridView. Основные примеры привязки DataGridView к сложным источникам данных и форматирования: ознакомьтесь с CodeProject, чтобы найти соответствующие статьи, советы и т. Д.
«Соберите» то, что вам нужно, из автоматически сгенерированного кода в файле Designer.cs, а затем, когда вы будете готовы, удалите экземпляр DataGridView в форме и «сделайте свое дело» во время выполнения.