Что происходит здесь, когда в форме открывается, она показывает contextMenu и отображает в нем DataGridView со значением dataSet1.Но когда я нажимаю кнопку, чтобы изменить источник данных сетки, он не показывает записи dataSet2.
private void Form1_Load(object sender, EventArgs e)
{
SetDataSource(dataSet1);// A populated DataSet
}
protected void SetDataSource(DataSet ds)
{
dataGridView1.DataSource = ds;
ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1);
contextMenuStrip1.Items.Clear();
contextMenuStrip1.Items.Add(tsHost);
contextMenuStrip1.Show(textBox1, 0, 27);
}
private void button1_Click(object sender, EventArgs e)
{
SetDataSource(dataSet2);// Another populated DataSet
}
Я попытался добавить другой элемент управления DataGridView (dataGridView2) в мою форму, но на этот раз яне поместил его в ToolStripControlHost, и я не добавил его в contextMenuStrip1.
dataGridView1.DataSource = ds;
dataGridView2.DataSource = ds; // <-- Parent of this is the Form1, the control is not added in the contextMenuStrip.
ToolStripControlHost tsHost = new ToolStripControlHost(dataGridView1);
contextMenuStrip1.Items.Clear();
contextMenuStrip1.Items.Add(tsHost);
contextMenuStrip1.Show(textBox1, 0, 27);
Когда загружается форма Form1, contextMenuStrip1 выскакивает, и dataGridView1 добавляется в качестве элемента, заставляя dataGridView1 исчезатьформа и dataGridView2 остаются только в Form1.
Когда я нажимаю button1
, dataGridView2
меняет свою базу контента с новой DataSource
(dataSet2
), в то время как dataGridView1 по-прежнему отображаетзначение dataSet1
.Что я заметил, так это когда время dataGridView1
добавляется к ToolStripHost
и превращается в Элемент в contextMenuStrip1
, свойство DataSource
элемента управления DataGridView
больше не изменяется.В отличие от dataGridView2
, который остается в форме, которую я не добавил к contextMenuStrip1
.