Если вы действительно хотите использовать одну и ту же сетку в вашем элементе управления снова и снова, вы можете создать одну статическую сетку, и ваш конструктор ClientLookUp добавит ее в нужное место - Panel иличто угодно - когда бы ни создавался новый.
Прежде чем идти по этому пути, спросите себя, действительно ли это то, что вы хотите сделать.Наличие такой же идентичной сетки, существующей во многих местах, может вызвать проблемы в будущем.Если вы хотите поддержать редактирование в сетке, вы обнаружите, что изменение одного значения изменяет одинаковое значение во всех других ваших сетках ..
РЕДАКТИРОВАТЬ
Я пыталсязаставить приведенный ниже код работать, но я не уверен, что такой подход будет возможен.Кажется, что как только вы пытаетесь прикрепить один и тот же элемент пользовательского интерфейса в более чем одно место, он перемещается из последнего места, куда вы его поместили;не похоже, что вы можете иметь одну и ту же сетку, находясь в более чем одном месте одновременно.Это имеет смысл, когда вы об этом думаете.
Вот код, который я пробовал.Может быть, это будет вам полезно.
public UserControl1()
{
InitializeComponent();
this.Controls.Add(myStaticGridView);
myStaticGridView.Dock = DockStyle.Fill;
}
static DataGridView _staticGrid;
public DataGridView myStaticGridView
{
get
{
if (_staticGrid != null)
return _staticGrid;
_staticGrid = new DataGridView();
_staticGrid.Columns.Add("A", "A");
_staticGrid.Columns.Add("B", "B");
_staticGrid.Columns.Add("C", "C");
_staticGrid.Columns[0].DataPropertyName = "A";
_staticGrid.Columns[1].DataPropertyName = "B";
_staticGrid.Columns[2].DataPropertyName = "C";
_staticGrid.DataSource = new[] {
new { A = "someA", B = "someB", C = "someC"},
new { A = "someA", B = "someB", C = "someC"},
new { A = "someA", B = "someB", C = "someC"},
new { A = "someA", B = "someB", C = "someC"},
};
return _staticGrid;
}
}
И затем загрузка элемента управления будет выглядеть следующим образом:
private void button1_Click(object sender, EventArgs e)
{
flowLayoutPanel1.Controls.Add(new UserControl1());
}