Ich habe eine Fensterformularanwendung gemacht, indem ich die Daten zum datagridview gezeigt habe. Aber es gab ein Problem, wenn die Daten in der Datagridview angezeigt wurden.Gibt es Unterschiede in der Aufruffunktion in form_load und button_click?
Die Funktion:
private void MySQL_ToDatagridview4()
{
dataGridView3.Columns.Clear();
mcon.Close();
mcon.Open();
MySqlDataAdapter MyDA = new MySqlDataAdapter();
string sqlSelectAll = "SELECT Item_Name,Item_Pic from stockitem ORDER BY Main_Category_ID ASC, Item_Name ASC";
MyDA.SelectCommand = new MySqlCommand(sqlSelectAll, mcon);
DataTable table = new DataTable();
MyDA.Fill(table);
BindingSource bSource = new BindingSource();
bSource.DataSource = table;
this.dataGridView3.DataSource = bSource;
DataGridViewImageColumn imageColumn = new DataGridViewImageColumn();
imageColumn.HeaderText = "Pic";
dataGridView3.Columns.Insert(0, imageColumn);
for (int i = 0; i < table.Rows.Count; i++)
{
try
{
String pic = table.Rows[i]["Item_Pic"].ToString();
Byte[] bitmapData = Convert.FromBase64String(FixBase64ForImage(pic));
System.IO.MemoryStream streamBitmap = new System.IO.MemoryStream(bitmapData);
def = new Bitmap((Bitmap)Image.FromStream(streamBitmap));
}
catch (Exception e)
{
MessageBox.Show(e.StackTrace);
}
dataGridView3.Rows[i].Cells[0].Value = def;
}
dataGridView3.Columns.Remove("Item_Pic");
foreach (DataGridViewRow row in dataGridView3.Rows)
{
row.Height = 110;
}
foreach (DataGridViewColumn col in dataGridView3.Columns)
{
col.Width = 110;
}
for (int i = 0; i < dataGridView3.ColumnCount; i++)
{
dataGridView3.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
dataGridView3.AutoResizeColumns();
dataGridView3.Columns[i].DefaultCellStyle.Font = new System.Drawing.Font("Verdana", 8F, FontStyle.Bold);
}
mcon.Close();
}
in Form_Load Called
private void Form1_Load(object sender, EventArgs e)
{
MySQL_ToDatagridview4();
}
Ergebnis:
Dann, wenn ich auf die Schaltfläche klicken
private void button6_Click(object sender, EventArgs e)
{
MySQL_ToDatagridview4();
}
Ergebnis:
Warum das Ergebnis so anders? Es ruft dieselbe Funktion auf.
Kontext ist alles. Das 'Load'-Ereignis wird nur einmal ausgelöst, wenn das' Form'-Objekt initialisiert wird. Offensichtlich wurde etwas, von dem die Ansicht abhängt, noch nicht vollständig initialisiert, wenn das Ereignis 'Laden' ausgelöst wird. Was das ist, kann ich nicht sagen. Sie haben kein gutes [mcve] hinzugefügt, das das Problem in Ihrer Frage zuverlässig reproduziert. Bitte verbessern Sie die Frage, wenn Sie eine gute Antwort wünschen. –