Ich habe 2 Fenster, Register und Benutzerprofil. In Register kann der Benutzer sein Profilbild hochladen und als BLOB in der MySQL-Datenbank speichern. Nach der Benutzeranmeldung kann er alle persönlichen Informationen einschließlich seines Profilbilds aktualisieren.Detect PictureBox Bildwechsel in C#
Dies ist mein Code zu aktualisieren, das Profilbild: erscheint
void UpdateProfileClick(object sender, EventArgs e)
{
FileStream fs;
BinaryReader br;
if(usernameUser.Text=="" || passwordUser.Text=="" || namaLengkapUser.Text=="" || tglLahirUser.Text=="" || pekerjaanUser.Text=="" || alamatUser.Text=="" || noHpUser.Text=="" || foto.Image==null)
{
MessageBox.Show("Data belum lengkap. Isilah semua data anda.", "Register Gagal", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
koneksi.Open();
string FileName = fototext.Text;
byte[] ImageData;
fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
br = new BinaryReader(fs);
ImageData = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
MySqlCommand cmd = new MySqlCommand("update user set [email protected], [email protected], [email protected]_lahir, [email protected], [email protected], [email protected]_hp, [email protected] where [email protected]", koneksi);
cmd.Parameters.AddWithValue(@"nama", namaLengkapUser.Text);
cmd.Parameters.AddWithValue(@"password", passwordUser.Text);
cmd.Parameters.AddWithValue(@"tanggal_lahir", tglLahirUser.Text);
cmd.Parameters.AddWithValue(@"pekerjaan", pekerjaanUser.Text);
cmd.Parameters.AddWithValue(@"alamat", alamatUser.Text);
cmd.Parameters.AddWithValue(@"no_hp", noHpUser.Text);
cmd.Parameters.AddWithValue(@"username", usernameUser.Text);
cmd.Parameters.AddWithValue(@"image", ImageData);
try{
cmd.ExecuteNonQuery();
MessageBox.Show("Data profil berhasil di-edit.", "Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information);
namauser.Text = namaLengkapUser.Text;
}
catch (MySqlException ex){
MessageBox.Show(ex.ToString());
}
koneksi.Close();
}
Das Problem ist, wenn der Benutzer aktualisiert ihre Daten aber nicht aktualisiert das Profilbild, ein Fehler auf. Der Benutzer muss also das Profilbild aktualisieren, um den Fehler zu vermeiden.
Also, das ist der Code, der zählt.
string FileName = fototext.Text;
byte[] ImageData;
fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
br = new BinaryReader(fs);
ImageData = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
Ich möchte, dass, wenn PictureBox
‚s Bild ändern, den obigen Code ausführen, sonst den obigen Code ignorieren.
Aber wie mache ich das? Ist es möglich IF Statements zu verwenden?
Vielen Dank.
* "aktualisiert das Profilbild jedoch nicht" * - versuchen Sie, diese Bedingung in * nichtmenschlicher * Weise zu schreiben, z. Ist der Text leer oder wurde auf die Schaltfläche nicht geklickt? – Sinatr
Wenn kein neues Bild geladen wurde - versuchen Sie es nicht zu aktualisieren? – BugFinder
@Sinatr bedeutet, dass das Profilbild vom Benutzer nicht geändert wird. Das Problem ist immer, dass der Benutzer sein Profil aktualisieren will, er muss sein Profilbild ändern. – billyhalim25