void ArkaPlandaÇalışanUygulama() { while (Çalışsın) { Bekleyenİşlemler_Yap(); EkrandakileriHareketlendir(); EkrandanSilinenleriHareketlendir(); if (BekleyenEkranlama.Count > 0) { EkranıTazele(); } else { AnaPano.Invoke((Action)(() => { AnaPano.AutoScroll = true; })); ArkaPlanİşlemiÇalışsınMı.WaitOne(); ArkaPlanİşlemiÇalışsınMı.Reset(); } } }
void EkranıTazele() { AnaPano.Invoke((Action)(() => { foreach (var biri in BekleyenEkranlama) { switch (biri.EkranlamaTipi) { case Bekleyen_Ekranlama_Tipi_.Ekle: AnaPano.Controls.Add(biri.Nesne as Panel); (biri.Nesne as Panel).BringToFront(); break; case Bekleyen_Ekranlama_Tipi_.ÖneGetir: (biri.Nesne as Panel).BringToFront(); break; case Bekleyen_Ekranlama_Tipi_.PozisyonunuDeğiştir: (biri.Nesne as Panel).Location = (Point)biri.Değer; break; case Bekleyen_Ekranlama_Tipi_.Sil: foreach (Control n in (biri.Nesne as Panel).Controls) { n.Dispose(); } (biri.Nesne as Panel).Controls.Clear(); (biri.Nesne as Panel).Dispose(); break; case Bekleyen_Ekranlama_Tipi_.KaydırmaÇubuğunuGizle: AnaPano.AutoScroll = false; break; case Bekleyen_Ekranlama_Tipi_.SolaDayalıResmiDeğiştir: (biri.Nesne as PictureBox).Image = (Image)biri.Değer; break; case Bekleyen_Ekranlama_Tipi_.YazıyıDeğiştir: int YüzdeDeğeri = 0; if (biri.Nesne is ComboBox && (biri.Değer as string).Contains(";")) { (biri.Nesne as ComboBox).Items.Clear(); (biri.Nesne as ComboBox).Items.AddRange((biri.Değer as string).Split(';')); } else if (biri.Nesne is ProgressBar && int.TryParse((biri.Değer as string), out YüzdeDeğeri)) { (biri.Nesne as ProgressBar).Value = YüzdeDeğeri; } else { (biri.Nesne as Control).Text = (string)biri.Değer; } break; case Bekleyen_Ekranlama_Tipi_.YazıyıDurgunlaştır: (biri.Nesne as Control).Enabled = false; break; case Bekleyen_Ekranlama_Tipi_.YazıyıEtkinleştir: (biri.Nesne as Control).Enabled = true; break; } } AnaPano.Refresh(); })); BekleyenEkranlama.Clear(); }
public void Uyar(int MesajNo, int YazıNo, string Uyarı, ToolTipIcon İkon = ToolTipIcon.Warning, int ZamanAşımı = 10000, string Başlık = "ilgili MesajNo daki mesajın tanımı") { if (Ekrandakiler.Count == 0) { return; } if (MesajNo >= Ekrandakiler.Count) { MesajNo = Ekrandakiler.Count - 1; } if (MesajNo < 0) { MesajNo = 0; } if (Başlık == "ilgili MesajNo daki mesajın tanımı") { this.Uyarı.ToolTipTitle = Ekrandakiler[MesajNo].Tanım; } else { this.Uyarı.ToolTipTitle = Başlık; } this.Uyarı.ToolTipIcon = İkon; Control Eleman; if (YazıNo == -1) { if (Ekrandakiler[MesajNo].SolaDayalıResim == null) { return; } Eleman = Ekrandakiler[MesajNo].SolaDayalıResim; } else { if (Ekrandakiler[MesajNo].Yazılar.Count == 0) { return; } if (YazıNo >= Ekrandakiler[MesajNo].Yazılar.Count) { YazıNo = Ekrandakiler[MesajNo].Yazılar.Count - 1; } if (YazıNo < 0) { YazıNo = 0; } Eleman = Ekrandakiler[MesajNo].Yazılar[YazıNo]; } if (AnaPano.InvokeRequired) { AnaPano.Invoke(new Action(() => { this.Uyarı.Show(string.Empty, Eleman); this.Uyarı.Show(Uyarı, Eleman, ZamanAşımı); })); } else { this.Uyarı.Show(string.Empty, Eleman); this.Uyarı.Show(Uyarı, Eleman, ZamanAşımı); } }
void Bekleyenİşlemler_YenidenÇizdir() { AnaPano.Invoke((Action)(() => { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Pano.BringToFront(); int EtiketlerinToplamYüksekliği = 0; int EnUzunEtiketinUzunluğu = 0; Point[] EtiketlerinKonumu = new Point[Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar.Count]; for (int i = 0; i < Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar.Count; i++) { EtiketlerinKonumu[i] = new Point(Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar[i].Location.X, EtiketlerinToplamYüksekliği); EtiketlerinToplamYüksekliği += Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar[i].Height + Ayarlar.İkiYazıArasıMesafe; if (Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar[i].Width > EnUzunEtiketinUzunluğu) { EnUzunEtiketinUzunluğu = Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar[i].Width; } } EtiketlerinToplamYüksekliği -= Ayarlar.İkiYazıArasıMesafe; int ResiminYüksekliği = 0; int ResiminUzunluğu = 0; if (Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim != null) { int YazılarınKonumu_X = 0, YazılarınKonumu_Y = 0; if (Ayarlar.Varsayılan_Resim_Boyut.Height == 0) { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height = EtiketlerinToplamYüksekliği; } else if (Ayarlar.Varsayılan_Resim_Boyut.Height > 0) { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height = Ayarlar.Varsayılan_Resim_Boyut.Height; } if (Ayarlar.Varsayılan_Resim_Boyut.Width == 0) { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Width = EtiketlerinToplamYüksekliği; } else if (Ayarlar.Varsayılan_Resim_Boyut.Width > 0) { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Width = Ayarlar.Varsayılan_Resim_Boyut.Width; } YazılarınKonumu_X = Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Width + Ayarlar.ResimİleYazıArasıMesafe; if (Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height < EtiketlerinToplamYüksekliği) { int fark = EtiketlerinToplamYüksekliği - Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height; fark /= 2; Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Location = new Point(0, fark); } else if (Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height > EtiketlerinToplamYüksekliği) { int fark = Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height - EtiketlerinToplamYüksekliği; YazılarınKonumu_Y = fark / 2; Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Location = new Point(0, 0); } for (int i = 0; i < Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar.Count; i++) { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Yazılar[i].Location = new Point(YazılarınKonumu_X, EtiketlerinKonumu[i].Y + YazılarınKonumu_Y); } ResiminYüksekliği = Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Height; ResiminUzunluğu = Ekrandakiler[Bekleyenİşlemler[0].MesajNo].SolaDayalıResim.Width; } Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Pano.Height = EtiketlerinToplamYüksekliği > ResiminYüksekliği ? EtiketlerinToplamYüksekliği : ResiminYüksekliği; if (!Ayarlar.Çerçeveli) { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Pano.Width = ResiminUzunluğu + Ayarlar.ResimİleYazıArasıMesafe + EnUzunEtiketinUzunluğu; } else { Ekrandakiler[Bekleyenİşlemler[0].MesajNo].Pano.Height += 3; } })); if (Bekleyenİşlemler[0].MesajNo > 0) { for (int i = Bekleyenİşlemler[0].MesajNo + 1; i < Ekrandakiler.Count; i++) { Ekrandakiler[i].HedefKonum.Y = Ekrandakiler[i - 1].HedefKonum.Y + Ekrandakiler[i - 1].Pano.Height + Ayarlar.İkiMesajArasıMesafe; Ekrandakiler[i].EkranGüncellemesiGerekiyor = true; } } }