MessageBoxTouch
由於系統MessageBox按鈕和字體過小, 因此本身寫了個方便更改外觀的MessageBox. 有什麼好玩的功能也能夠擴展上去. 下有演示圖.
GitHub項目地址git
特性
- 單例模式運行, 運行時沒法操做父窗口.
- 由於能夠改變字體且支持觸摸操做, 因此適合在平板上使用.
- 消息框最初有必定高度, 但若是Message文本內容過多, 超出了高度限制, MessageBox顯示不下時, 窗口高度會對應增長, 使消息能被完整顯示出來.
- 若是消息框窗口高度達到窗口工做區高度, 但仍是容不下消息字符串顯示時, 消息框高度再也不增加, 可是能夠經過滾動消息區域查看剩餘消息.
- 能夠自由改變外觀.
- 可在按鈕區域插入自定義控件 (如輸入框, 另外一個按鈕, 進度條, 等等). 調用後可獲取用戶對插入的自定控件的操做結果.
- 能夠在運行時改變消息框內容與樣式.
用法
- 生成項目MessageBoxTouch, 獲得對應動態連接庫, 引用到本身的項目中, 並調用. 本工程自帶有示例.
- 工具的MessageBox的Show函數參數與System.Windows.MessageBox的參數兼容, 簡單而言只要引入一下dll, 不用作過多改動便可使用工具提供的MessageBox.
- 工具的MessageBox.Show函數還有與系統函數不一樣的重載, 能夠實現更多功能. 例如自定義消息框按鈕.
- 能夠經過設置屬性改變MessageBox的外觀, 例如窗口各部分的字體, 透明度, 背景, 邊框, 窗口大小, 限制高度增加, 設置窗口寬度等等.
圖片示例
代碼示例
兼容寫法
返回值爲MessageBoxResult型.github
MessageBox.Show("message");
MessageBox.Show("message", "title", MessageBoxButton.OKCancel, MessageBoxImage.Question);
自定義寫法
返回值爲int型, 值爲參數按鈕列表中的索引.app
MessageBox.Show(new List<object> { "btn1" }, "msg");
MessageBox.Show(new List<object> { new ButtonSpacer(250), "btn1", "btn2", "btn3", "btn4", "btn5", new ButtonSpacer(30) }, "msg", "title", MessageBoxImage.Asterisk);
修改式樣屬性
單獨修改
添加在Show函數以前函數
MessageBox.ButtonPanelColor = new MessageBoxColor("red");
MessageBox.WindowMinHeight = 300;
MessageBox.MessageFontSize = 22;
MessageBox.Show(new List<object> { "btn1" }, "msg");
批量修改
PropertiesSetter propertiesSetter = new PropertiesSetter();
propertiesSetter.ButtonBorderThickness = new Thickness(10);
propertiesSetter.MessagePanelColor = new MessageBoxColor(Colors.black);
MessageBox.Show(propertiesSetter, "message", "title", MessageBoxButton.OKCancel, MessageBoxImage.Question);
MessageBox.Show(propertiesSetter, new List<object> { "btn1" }, "msg");
PropertiesSetter propertiesSetter = new PropertiesSetter();
propertiesSetter.ButtonBorderThickness = new Thickness(10, 0, 0, 0);
propertiesSetter.MessagePanelColor = new MessageBoxColor("#222DDD");
MessageBox.PropertiesSetter = propertiesSetter;
MessageBox.Show(new List<object> { new TextBox(), "btn1" }, "msg");
修改按鈕區域
插入空白
在傳入的List<object>中對應位置插入一個ButtonSpacer實例. 構造函數參數可爲空或指定寬度值. 工具
插入自定義控件
在傳入的List<object>中對應位置插入插入一個FrameworkElement派生類的實例, 便可在對應位置顯示相應控件.
列寬由插入的控件的寬度決定. 字體
- Show函數調用結束返回後可調用MessageBox.GetBtnList()獲取該控件, 獲得用戶輸入 / 操做結果.
int result = MessageBox.Show(new List<object> { new TextBox(), "btn1", "btn2" }, "msg");
TextBox tb = (TextBox)MessageBox.GetBtnList()[0];
MessageBox.Show(tb.Text == string.Empty ? "用戶未輸入" : tb.Text, (string)MessageBox.GetBtnList()[result]);
可操做的屬性
屬性 |
狀態 |
窗口標題 / 消息 / 按鈕 |
已實裝 |
窗口鎖高 |
已實裝 |
窗口初始高度與寬度 |
已實裝 |
消息區域換行風格 |
已實裝 |
各區域文本字體 |
已實裝 |
各區域文本大小 |
已實裝 |
各區域文本顏色 |
已實裝 |
各區域透明度 |
已實裝 |
各區域背景色 |
已實裝 |
各區域邊框顏色 |
已實裝 |
各區域邊框寬度 |
已實裝 |
窗口漸顯時間 |
已實裝 |
自定窗口打開與關閉動畫 |
已實裝 |
自定義圖標 |
已實裝 |
是否應用窗口關閉按鈕 |
已實裝 |
按鈕動做樣式 |
已實裝 |
窗口計時 / 當即關閉 |
已實裝 |
成員函數與屬性
MessageBox屬性 |
類型 |
含義 |
靜態 |
狀態 |
TitleText |
string |
設置 / 取得標題文字 |
是 |
已實裝 |
MessageText |
string |
設置 / 取得消息文字 |
是 |
已實裝 |
LockHeight |
bool |
是否鎖住窗口高度不容許自動增加 |
是 |
已實裝 |
TextWrappingMode |
TextWrapping |
消息段落換行風格 |
是 |
已實裝 |
WindowWidth |
double |
窗口寬度 |
是 |
已實裝 |
WindowMinHeight |
double |
窗口最小 (初始) 高度 |
是 |
已實裝 |
TitleFontFamily |
FontFamily |
標題文本字體 |
是 |
已實裝 |
MessageFontFamily |
FontFamily |
消息文本字體 |
是 |
已實裝 |
ButtonFontFamily |
FontFamily |
按鈕文本字體 |
是 |
已實裝 |
TitleFontSize |
int |
標題文本大小 |
是 |
已實裝 |
MessageFontSize |
int |
消息文本大小 |
是 |
已實裝 |
ButtonFontSize |
int |
按鈕文本大小 |
是 |
已實裝 |
TitleFontColor |
MessageBoxColor |
標題文本顏色 |
是 |
已實裝 |
MessageFontColor |
MessageBoxColor |
消息文本顏色 |
是 |
已實裝 |
ButtonFontColor |
MessageBoxColor |
按鈕文本顏色 |
是 |
已實裝 |
WindowOpacity |
double |
窗口總體透明度 |
是 |
已實裝 |
TitleBarOpacity |
double |
標題區域透明度 |
是 |
已實裝 |
MessageBarOpacity |
double |
消息區域透明度 |
是 |
已實裝 |
ButtonBarOpacity |
double |
按鈕區域透明度 |
是 |
已實裝 |
TitlePanelColor |
MessageBoxColor |
標題區域背景色 |
是 |
已實裝 |
MessagePanelColor |
MessageBoxColor |
消息區域背景色 |
是 |
已實裝 |
ButtonPanelColor |
MessageBoxColor |
按鈕區域背景色 |
是 |
已實裝 |
WndBorderColor |
MessageBoxColor |
窗口邊框顏色 |
是 |
已實裝 |
TitlePanelBorderColor |
MessageBoxColor |
標題區域邊框顏色 |
是 |
已實裝 |
MessagePanelBorderColor |
MessageBoxColor |
消息區域邊框顏色 |
是 |
已實裝 |
ButtonPanelBorderColor |
MessageBoxColor |
按鈕區域邊框顏色 |
是 |
已實裝 |
ButtonBorderColor |
MessageBoxColor |
按鈕邊框顏色 |
是 |
已實裝 |
WndBorderThickness |
MessageBoxColor |
窗口邊框寬度 |
是 |
已實裝 |
TitlePanelBorderThickness |
Thickness |
標題區域邊框寬度 |
是 |
已實裝 |
MessagePanelBorderThickness |
Thickness |
消息區域邊框寬度 |
是 |
已實裝 |
ButtonPanelBorderThickness |
Thickness |
按鈕區域邊框寬度 |
是 |
已實裝 |
ButtonBorderThickness |
Thickness |
按鈕邊框寬度 |
是 |
已實裝 |
WindowShowDuration |
Duration |
窗口漸顯時間 |
是 |
已實裝 |
WindowShowAnimations |
List<KeyValuePair<DependencyProperty, AnimationTimeline>> |
窗口顯示動畫 |
是 |
已實裝 |
WindowCloseAnimations |
List<KeyValuePair<DependencyProperty, AnimationTimeline>> |
窗口關閉動畫 |
是 |
已實裝 |
CloseIcon |
BitmapImage |
自定義關閉圖標 |
是 |
已實裝 |
WarningIcon |
BitmapImage |
自定義警告圖標 |
是 |
已實裝 |
ErrorIcon |
BitmapImage |
自定義錯誤圖標 |
是 |
已實裝 |
InfoIcon |
BitmapImage |
自定義信息圖標 |
是 |
已實裝 |
QuestionIcon |
BitmapImage |
自定義問題圖標 |
是 |
已實裝 |
EnableCloseButton |
bool |
應用窗口關閉按鈕 |
是 |
已實裝 |
ButtonStyleList |
List<Style> |
按鈕動做樣式 |
是 |
已實裝 |
CloseTimer |
MessageBoxCloseTimer |
窗口計時 / 當即關閉 |
是 |
已實裝 |
MessageBox函數 |
含義 |
參數 |
返回值 |
靜態 |
Show(string, string, MessageBoxButton, MessageBoxImage) |
兼容形式調出消息窗口 |
消息, 標題 (選), 按鈕類型 (選), 圖標類型 (選) |
MessageBoxResult |
是 |
Show(List<object>, string, string, MessageBoxImage) |
自定義形式調出消息窗口 |
按鈕列表, 消息, 標題 (選), 圖標類型 (選) |
int |
是 |
Show(PropertiesSetter, string, string, MessageBoxButton, MessageBoxImage) |
兼容形式調出消息窗口, 並使用既有樣式 |
樣式, 消息, 標題 (選), 按鈕類型 (選), 圖標類型 (選) |
MessageBoxResult |
是 |
Show(PropertiesSetter, List<object>, string, string, MessageBoxImage) |
自定義形式調出消息窗口, 並使用既有樣式 |
樣式, 按鈕列表, 消息, 標題 (選), 圖標類型 (選) |
int |
是 |
GetBtnList() |
獲取按鈕列表 |
|
List<object> |
是 |
SetButtonStyle() |
設定當前顯示的圖標類型 |
|
void |
是 |
MessageBoxColor屬性 |
含義 |
類型 |
color |
顏色值 |
object |
colorType |
顏色類型 |
ColorType |
MessageBoxColor函數 |
含義 |
參數 |
返回值 |
靜態 |
MessageBoxColor(object) |
構造函數 |
十六進制顏色碼字符串或者Color類的實例或顏色名字符串 |
|
否 |
MessageBoxColor(object, ColorType) |
構造函數 |
十六進制顏色碼字符串或者Color類的實例或顏色名字符串, ColorType枚舉值 |
|
否 |
GetSolidColorBrush() |
輸出這個實例顏色實例對應的SolidColorBrush |
|
SolidColorBrush |
否 |
MessageBoxCloseTimer屬性 |
含義 |
類型 |
timeSpan |
距窗口關閉的時間 |
TimeSpan |
result |
int |
窗口關閉後返回的返回值 |
MessageBoxCloseTimer函數 |
含義 |
參數 |
返回值 |
靜態 |
MessageBoxCloseTimer(TimeSpan, int) |
構造函數 |
TimeSpan實例 (距關閉的時間), 窗口關閉後返回的返回值 |
|
否 |
MessageBoxCloseTimer(int, int) |
構造函數 |
距關閉的秒數, 窗口關閉後返回的返回值 |
|
否 |
CloseNow() |
當即關閉窗口 |
|
|
否 |
PropertiesSetter屬性 |
含義 |
略 (參考MessageBox屬性) |
|
PropertiesSetter函數 |
含義 |
參數 |
返回值 |
靜態 |
PropertiesSetter() |
構造函數 |
|
|
否 |
PropertiesSetter(PropertiesSetter) |
構造函數 |
一個既有的PropertiesSetter實例 |
|
否 |
ButtonSpacer屬性 |
含義 |
類型 |
length |
留白長度 |
double |
ButtonSpacer函數 |
含義 |
參數 |
返回值 |
靜態 |
ButtonSpacer() |
構造函數 |
|
|
否 |
ButtonSpacer(double) |
構造函數 |
留白長度 |
|
否 |
GetLength() |
獲取留白長度 |
|
double |
否 |