2010-02-13 6 views

Répondre

0

Impossible de faire. Vous devrez construire votre propre boîte. Je suppose que c'est WinForms, si c'est ASP.NET, je ne suis pas qualifié pour répondre.

+0

Merci, s'il vous plaît suggérer, c'est pour winforms. – Karthick

4

Vous ne pouvez pas. Ceci est un wrapper pour l'API MessageBoxEx.

Créez votre propre messagebox personnalisé pour le faire.


Vous pouvez suivre this tutoriel, comme un exemple de la façon de mettre en œuvre un.

Les bases étapes de la création d'une telle forme:

  1. Créer une nouvelle forme
  2. Ajouter une étiquette et deux boutons
  3. Définir la police d'étiquette Gras
  4. ajouter gestionnaire à deux boutons, fermant le formulaire et définissant une propriété pour laquelle le bouton a été enfoncé.
+0

Merci, pouvez-vous suggérer quelques étapes pour cela? – Karthick

+7

Il l'a fait. Le tutoriel. – bmargulies

+0

yup, a même ajouté quelques étapes de base comme une ligne de guidage. – Amirshk

24

Il est possible qu'une boîte de message soit une fenêtre régulière qui peut être manipulée comme n'importe quelle autre. Le code pour le faire est cependant un peu rude. Ajouter une nouvelle classe à votre projet et collez ce code:

using System; 
using System.Text; 
using System.Drawing; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

class BoldMessageBox : IDisposable { 
    private int mTries = 0; 
    private Form mOwner; 
    private Font mFont; 

    public BoldMessageBox(Form owner) { 
    mOwner = owner; 
    owner.BeginInvoke(new MethodInvoker(findDialog)); 
    } 

    private void findDialog() { 
    // Enumerate windows to find the message box 
    if (mTries < 0) return; 
    EnumThreadWndProc callback = new EnumThreadWndProc(checkWindow); 
    if (EnumThreadWindows(GetCurrentThreadId(), callback, IntPtr.Zero)) { 
     if (++mTries < 10) mOwner.BeginInvoke(new MethodInvoker(findDialog)); 
    } 
    } 
    private bool checkWindow(IntPtr hWnd, IntPtr lp) { 
    // Checks if <hWnd> is a dialog 
    StringBuilder sb = new StringBuilder(260); 
    GetClassName(hWnd, sb, sb.Capacity); 
    if (sb.ToString() != "#32770") return true; 
    // Got it, get the STATIC control that displays the text 
    IntPtr hText = GetDlgItem(hWnd, 0xffff); 
    if (hText != IntPtr.Zero) { 
     // Get the current font 
     IntPtr hFont = SendMessage(hText, WM_GETFONT, IntPtr.Zero, IntPtr.Zero); 
     Font font = Font.FromHfont(hFont); 
     // And make it bold (note the size change to keep enough space!!) 
     mFont = new Font(font.FontFamily, font.SizeInPoints - 1f, FontStyle.Bold); 
     SendMessage(hText, WM_SETFONT, mFont.ToHfont(), (IntPtr)1); 
    } 
    // Done 
    return false; 
    } 
    public void Dispose() { 
    mTries = -1; 
    mOwner = null; 
    if (mFont != null) mFont.Dispose(); 
    } 

    // P/Invoke declarations 
    private const int WM_SETFONT = 0x30; 
    private const int WM_GETFONT = 0x31; 
    private delegate bool EnumThreadWndProc(IntPtr hWnd, IntPtr lp); 
    [DllImport("user32.dll")] 
    private static extern bool EnumThreadWindows(int tid, EnumThreadWndProc callback, IntPtr lp); 
    [DllImport("kernel32.dll")] 
    private static extern int GetCurrentThreadId(); 
    [DllImport("user32.dll")] 
    private static extern int GetClassName(IntPtr hWnd, StringBuilder buffer, int buflen); 
    [DllImport("user32.dll")] 
    private static extern IntPtr GetDlgItem(IntPtr hWnd, int item); 
    [DllImport("user32.dll")] 
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); 
} 

Et l'utiliser comme ceci:

private void button1_Click(object sender, EventArgs e) { 
    using (new BoldMessageBox(this)) { 
    MessageBox.Show("Nobugz waz here"); 
    } 
} 

Il y a une faille dans cette approche. Après avoir rendu la police en gras, le texte doit toujours tenir dans le contrôle statique que la boîte de message réservée au texte. Cela m'a obligé à réduire la taille de la police. Vous devrez peut-être modifier cette valeur.

+19

Un * bit * gritty ?! :) – Tom

0

MessageBox Extended Assemblée .NET XMSG .NET web page: more info, download

Permet de régler à la volée grande variété de paramètres visuels MessageBox.

caractéristiques réglables comprennent la police de message et la couleur, les légendes des boutons, les polices et les info-bulles, fond dialogue, la position de dialogue, icône de dialogue, délai d'attente et plus encore. Selon la police de message sélectionnée, la fenêtre de dialogue se redimensionne automatiquement pour s'adapter au message.

Commandes supplémentaires pouvant être affichées en option: case à cocher, saisie de texte, lien Web, jusqu'à 3 boutons supplémentaires.

Dans votre code .NET, vous appelez encore MessageBox.Show régulière. MessageBox étendu n'est pas un dialogue personnalisé. C'est toujours MessageBox régulier avec des fonctionnalités étendues ajoutées.

OS pris en charge: XP, 2000, 2003, 2008 Vista, Win7 - 32 ou 64 bits.

Téléchargements incluent la version d'essai entièrement fonctionnelle, et la version régulière avec le code source complet C#.