Dans mon formulaire Charger un événement, je vérifie deux conditions et donne un message si l'une d'entre elles ou les deux sont vraies mais chaque fois que le formulaire principal est masqué, le message réapparaît et cela se produit chaque fois que le formulaire principal est affiché après qu'il a été caché afin que l'événement Load soit exécuté chaque fois .. Je veux juste que ce message soit montré une fois si les conditions sont vraies
Ceci est mes codes d'événement LoadComment empêcher l'exécution simultanée de plusieurs événements
private void Form1_Load(object sender, EventArgs e)
{
try
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
SqlCommand cmd = new SqlCommand("select clientData.Id,clientData.clientName,clientData.clientPhone,clientData.clientMobile,clientData.clientEmail,clientData.clientPage,marketingData.marketingBy,marketingData.marketingFor,marketingData.marketingCities,marketingData.marketingDurations,marketingData.marketingStartsFrom,marketingData.marketingEndsIn,marketingData.adDate,marketingData.adImage,priceAndProfits.marketingCost from clientData inner join marketingData on clientData.Id = marketingData.m_Id inner join priceAndProfits on clientData.Id = priceAndProfits.p_Id where marketingData.marketingStartsFrom >= getdate()", cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
if (dt.Rows.Count > 0)
{
upComing = true;
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
if (DateTime.Now.Day >= 25 && DateTime.Now.Day < 31)
{
try
{
if (cn.State == ConnectionState.Closed)
{
cn.Open();
}
SqlCommand cmd = new SqlCommand("select clientData.Id,clientData.clientName,clientData.clientMobile,clientData.clientPage,marketingData.marketingBy,priceAndProfits.marketingCost,priceAndProfits.marketingPrice,priceAndProfits.marketingProfit,priceAndProfits.dollarPrice,priceAndProfits.payment from clientData inner join marketingData on clientData.Id = marketingData.m_Id inner join priceAndProfits on clientData.Id = priceAndProfits.p_Id where clientData.isDebtor=1", cn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt2);
if (dt2.Rows.Count > 0)
{
debt = true;
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
if (debt == true || upComing == true)
{
MessageBox.Show("يرجى مراجعة الإشعارات");
}
}
Comment avez-vous « cacher » la forme? En utilisant 'Form.Hide()'? et comment le montrez-vous à nouveau. Pouvez-vous partager ces morceaux de code. Parce que normalement, lorsque vous masquez un formulaire, puis le montrer à nouveau, il ne doit pas déclencher l'événement Load. –
C'est un bon indice que vous avez un bug dans votre programme. Comme créer à nouveau l'objet formulaire au lieu d'utiliser l'objet existant. Utilisez le débogueur, définissez une pause sur le gestionnaire d'événements Load et quand il frappe la deuxième fois, regardez dans la fenêtre Call Stack. Il vous montre où se trouve le code pervers. Au lieu d'utiliser Hide(), presque toujours une mauvaise idée, considérez juste de fermer un formulaire dont vous n'avez plus besoin. [Cet extrait] (https://stackoverflow.com/a/10769349/17034) devrait être utile pour empêcher cela de mettre fin à votre programme. –
Oups, je voulais dire le constructeur, pas l'événement Load. –