2010-02-01 33 views
6

C# ile ekranın tamamında gri, saydam bir alan kaplamak istiyorum. Bu, Windows Forms ile yapmak mümkün mü ve bunu yapmak için nasıl giderdim?Ekran Yerleşimi İçin Ekran Görüntüsü

+1

Hey, belki de o lanet UAC sorgusunu nihayetinde yapabilirsin, eğer pencereni istediğin yere yerleştirebilirsen .... –

cevap

8

Elbette, tüm masaüstü ekranlarını kapsayan kenarlıksız, yarı saydam bir pencere oluşturun.

Aşağıdaki LINQ ile ekranlara tümünü kapsayacak şekilde doğru Dikdörtgen bulabilirsiniz:

Rectangle bounds = Screen.AllScreens 
         .Select(x => x.Bounds) 
         .Aggregate(Rectangle.Union); 

Ardından Sol, Üst, Genişlik kurmak ve ek olarak bounds

+0

Doğru, bunu nasıl yapacağımı merak ediyorum. Kenarlıksız bir pencere oluşturulamıyor gibi görünmüyor ve her ne zaman "azami" olacak bir Form seçtiğimde, tüm ekranı kapsamıyor ve alt 5 piksel ve sağ 10 piksel özlüyor. – cam

+4

Büyük olasılıkla muhtemelen burada istediğinizi değil. Pencerenizi tam görünen ekran alanıyla aynı büyüklükte (belki tüm ekranlarda) ve "FormBorderStyle" özelliğini "Hiçbiri" olarak ayarlayarak kenarlıksız hale getirebilirsiniz. – Joey

+2

+1 Birden çok ekranı işlemek için Linq'in iyi kullanımı, teşekkürler! – BillW

2

gelen Pencere yüksekliği için

  1. TopMost, göster: None 'FormBorderStyle özelliğini grup önerisini' Johannes kullanarak, ben de ekranı '-out dim' için kullanılan bu Formu'nda aşağıdaki özellikleri ayarlayın ediyorum InTaskBar, ControlBox, MaximizeBox, MinimizeBox: 'Yanlış
  2. Metin özelliği: açık o
ben Form Load olayı "dim-out" form'ın boyutunu ayarlamak istiyorum

: Zarif kullanmayı tercih ediyorum Birden fazla monitörün durumunu ele almak istediğimde bir projeye eklenen bir formun sınırlarını belirlemek için Rob'un cevabındaki kod. Eğer ne olursa olsun yanıt olarak gerektiğinde

// in the Load Event of the "dim-out" Form 
    this.Bounds = Screen.PrimaryScreen.Bounds; 

Sonra, elbette, bu "dim-out" Form gösterebilir: Sadece tek bir monitör işlemek için isteseydim, tıpkı basit bir şey yapacağını Görünür Formlarınız.

"Çıkarılan" Formun gösterilmesi, Uygulamanızın diğer görünür Formlarının üstünde görünmesini sağlar (bunlardan biri TopMost veya TopLevel özelliklerine sahip değilse).

Ancak elde edebileceğiniz güzel bir etki "Message-out" formunun (ya da moda gösterilen bir formun) gösterilmesinden hemen önce gösterilmesidir. Bu, MessageBox iletişim kutusunun (ya da form formunun) sahip olmanız anlamına gelir. arkasındaki her şey ile "önden".

dimmedForm.Show(); 

    // change these to suit your taste or purpose 
    // this.BringToFront(); 
    // dimmedForm.BringToFront(); 

    // example of showing a MessageBox over the dimmedForm 
    // which will block the current thread 
    MessageBox.Show("why not ?"); 

    // now hide the dimmedForm 
    dimmedForm.Hide(); 

Bir (tasarım zamanında maruz değildir) 'toplevel tesiste göz ve yenileme atmak isteyebilirsiniz:

Yani burada kodunuzu "soluk" formunu görünebilir göstermek nasıl Bu özelliğin, ekrandaki Form sırasını nasıl etkileyebileceğinin yanı sıra, bir formun (Tasarım zamanında maruz kalan) TopMost özelliğini nasıl incelediğine dair bilginiz.

+2

"Birleştirme yanıtı" özelliğine ihtiyacımız var :) (+1) –

İlgili konular