.NET'in MessageBox
boyutu, görüntülendiği ekranın çözünürlüğüne göre boyutunu nasıl belirler?MessageBox'un boyutu
WPF uygulaması için biraz daha esnek bir iletişim penceresi yazıyorum. Pencerenin düzeni bir Grid dışarı koydu:
+-----------------
| auto: Header // A header for the dialog.
+-----------------
| auto: Content // can be any FrameworkElement.
+-----------------
| auto: BottomPanel // With buttons <OK>, <Cancel>, <Delete>, etc.
+-----------------
Content
hücre ÇOK büyük olabilir. Kullanım durumlarımdan birinde, kullanıcı bir listeden x öğelerini silmek istiyor. Öğeler onay iletişiminde listelenir. Çok fazla sayıda eleman varsa (50'den fazla ifade edelim), pencere tadı benim için çok büyük olabilir.
Ne istiyorum Microsoft'un kendi MessageBox
iletişim taklit eden bir şekilde cari ekrandan iletişim penceresinin MaxHeight
ve MaxWidth
özelliklerini belirleyen bir fonksiyondur.
Not: Aşağıdaki static
yöntemi ile mesaj iletişimini çağırmak:
// MessageDialog class
public static object Show(
Window owner,
FrameworkElement content,
string title,
string header,
params MessageDialogButton[] buttons
);
/* The MessageDialogButton class has the following properties:
* Text, ReturnValue, IsDefault, IsCancel. The class produces
* System.Windows.Controls.Button objects that when clicked
* return the value of their ReturnValue property--which is then
* returned by MessageDialog::Show(...)
*/
PPS: iletişim, MessageDialog
pencere en Owner
bulunduğu ekranını görüntülemek için ekranı belirlemek için. Geri dönüş olarak, ilk (birincil) ekran kullanılır.
Sorunuzun bir cevabı değil, ancak temel olarak bir şey olan Vista + TaskDialog'a kolay erişim sağlayan [WindowsAPICodePack] (http://archive.msdn.microsoft.com/WindowsAPICodePack) adresini incelemek isteyebilirsiniz. daha çevik ve daha iyi görünümlü MessageBox gibi. Sadece Vista'da çalışır, ancak belki ihtiyaçlarınızı karşılar. –
Bu her zaman MessageBox'ın yerini almaya çalışan herkes için engeldir. Otomatik ölçeklendirme, kendinizi uygulamak için önemsizdir.Bunu bir mesaj kutusu olarak düşünmeyi bırak, sadece normal bir pencere olarak düşünmeye başla. Kaydırma çubukları ve kullanıcının pencereyi yeniden boyutlandırmasını sağlamak normaldir. –
Kragen'in cevabı ve Hans Passant'ın yorumu sayesinde, bir çözüm buldum: pencerenin maksimum genişlik ve yüksekliği, ekranın genişliğinin 5/8'ini ve yüksekliğinin 2/3'ü. İçerik, kullanıcının çok büyük olduğunda içeriği kaydırmasını sağlayan bir ScrollViewer içine sarılır. Tam olarak istediğim şey değil, ancak mesaj penceresinin boyutunu elde etmek için düzeni birçok kez hesaplamak için çok fazla kod yapmak istemiyorum. – Minustar