Jak mogę wyświetlić tekst pogrubiony w oknie dialogowym wyświetlanym przez MessageBox.Show
, używając C#?Pogrubiony tekst w MessageBox
Odpowiedz
Nie można zrobić. Musisz zbudować własne pudełko. Zakładam, że to jest WinForms, jeśli to jest ASP.NET, nie mam kwalifikacji do odpowiedzi.
Nie możesz. To jest opakowanie dla interfejsu API MessageBoxEx.
Utwórz własną niestandardową skrzynkę wiadomości, aby to zrobić.
Możesz śledzić this samouczek, jako przykład, jak zaimplementować jeden.
Podstawy etapy tworzenia taką postać:
- Utwórz nowy formularz
- dodać etykietę i dwa przyciski
- ustawić czcionkę etykiety Bold
- dodania obsługi obu przycisków zamknięcie formularza i ustawienie właściwości, dla której naciśnięto przycisk.
Dzięki, czy możesz zaproponować kilka kroków? – Karthick
Zrobił to. Samouczek ;. – bmargulies
tak, nawet dodano kilka podstawowych kroków jako linii pomocniczej. – Amirshk
Jest możliwe, że okno wiadomości jest zwykłym oknem, które można zhakować tak jak każde inne. Kod do zrobienia jest jednak trochę gritty. Dodaj nową klasę do swojego projektu i wklej ten kod:
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);
}
i używać go tak:
private void button1_Click(object sender, EventArgs e) {
using (new BoldMessageBox(this)) {
MessageBox.Show("Nobugz waz here");
}
}
Jest jedna wada tego podejścia. Po wytłuszczeniu czcionki tekst musi nadal pasować do statycznej kontroli zarezerwowanej dla wiadomości. To wymagało ode mnie zmniejszenia czcionki. Być może będziesz musiał poprawić tę wartość.
A * bit * gritty ?! :) – Tom
Rozszerzony MessageBox NET montażowe XMSG .NET web page: more info, download
Reguluje na bieżąco różnorodnych MessageBox ustawień wizualnych.
Funkcje regulowane obejmują czcionkę i kolor wiadomości, podpisy przycisków, czcionki i podpowiedzi, tło dialogowe, pozycję okna dialogowego, ikonę okna dialogowego, limit czasu i wiele innych. W zależności od wybranej czcionki wiadomości, okno dialogowe automatycznie zmienia rozmiar w celu dostosowania do wiadomości.
Dodatkowe elementy opcjonalne, które można opcjonalnie wyświetlać: pole wyboru, wprowadzanie tekstu, łącze do strony internetowej, maksymalnie 3 dodatkowe przyciski.
W swoim kodzie .NET nadal dzwonisz do zwykłego MessageBox.Show. Extended MessageBox nie jest niestandardowym dialogiem. To wciąż zwykły MessageBox z dodanymi funkcjami rozszerzonymi.
Obsługiwane systemy operacyjne: XP, 2000, 2003, 2008 Vista, Win7 - 32 lub 64-bit.
Pobieranie obejmuje w pełni funkcjonalną wersję próbną i regularną wersję z pełnym kodem źródłowym C#.
- 1. Częściowo pogrubiony tekst w HTML wybierz
- 2. Utwórz tekst pogrubiony w języku Java Android
- 3. Jak narysować pogrubiony tekst na bitmapie?
- 4. Jak zmienić tekst na pogrubiony w systemie Android?
- 5. Jak zrobić pogrubiony tekst w PHP wyeksportowany plik .xls
- 6. Jak wyświetlać pogrubiony tekst tylko w części JTextArea?
- 7. wysłać tekst pogrubiony i pochylony na telegramu bot z html
- 8. Aplikacje uniwersalne MessageBox: "Nazwa" MessageBox "nie istnieje w bieżącym kontekście"
- 9. Wyłączyć pogrubiony przycisk
- 10. Sprawdź, czy okno to MessageBox
- 11. Pokaż MessageBox wyśrodkowany w formie
- 12. jak pokazać MessageBox w MVVM
- 13. Jak wyświetlić MessageBox w Monodroid
- 14. Modal MessageBox w aplikacji WPF
- 15. W programie Excel vba ustawiono pogrubiony określony tekst ciągu znaków w komórce?
- 16. tk messagebox import zamieszanie
- 17. Ustaw lokalizację MessageBox?
- 18. Jak zmienić lokalizację MessageBox?
- 19. MessageBox zamyka inna forma
- 20. Implementacja GTK MessageBox
- 21. Jak mogę nadać styl pogrubiony w Androidzie?
- 22. Jak dodać pogrubiony tekst w Rich TextBox programowo za pomocą VB.NET
- 23. C# Okno dialogowe komunikatu MessageBox
- 24. Komunikaty o błędach MessageBox C#
- 25. lambda ekspresja i Messagebox w C#
- 26. Program końcowy po zamknięciu MessageBox
- 27. Jak programowo napisać pogrubiony tekst do dokumentu programu Word bez pogrubienia całego dokumentu?
- 28. Arkusze stylów Qt: QHeaderView rysuje tekst nagłówka pogrubiony po wybraniu danych widoku
- 29. Jak ustawić pogrubiony tytuł na pasku akcji?
- 30. Jak wyświetlić MessageBox za pomocą pola wyboru?
Dzięki, zasugeruj, że jest ona przeznaczona do winform. – Karthick