⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messageboxgenerator.cs

📁 全功能c#编译器
💻 CS
字号:
// <file>
//     <copyright see="prj:///doc/copyright.txt"/>
//     <license see="prj:///doc/license.txt"/>
//     <owner name="Mike Krüger" email="mike@icsharpcode.net"/>
//     <version value="$version"/>
// </file>
using System;
using System.Drawing;
using System.Collections;
using System.Diagnostics;
using System.ComponentModel;
using System.Windows.Forms;

using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Gui.Dialogs;
using ICSharpCode.Core.Properties;
using ICSharpCode.Core.AddIns.Codons;

namespace Plugins.Wizards.MessageBoxBuilder.Generator {
	
	public class MessageBoxGenerator
	{
		MessageBoxButtons       messageBoxButtons       = MessageBoxButtons.OK;
		MessageBoxIcon          messageBoxIcon          = MessageBoxIcon.None;
		MessageBoxDefaultButton messageBoxDefaultButton = MessageBoxDefaultButton.Button1;
		
		string text    = String.Empty;
		string caption = String.Empty;
		
		bool   generateReturnValue = false;
		string variableName        = String.Empty;
		bool   generateSwitchCase  = false;
		
		public MessageBoxButtons MessageBoxButtons {
			get {
				return messageBoxButtons;
			}
			set {
				messageBoxButtons = value;
				OnChanged(null);
			}
		}

		public MessageBoxIcon MessageBoxIcon {
			get {
				return messageBoxIcon;
			}
			set {
				messageBoxIcon = value;
				OnChanged(null);
			}
		}

		public MessageBoxDefaultButton MessageBoxDefaultButton {
			get {
				return messageBoxDefaultButton;
			}
			set {
				messageBoxDefaultButton = value;
				OnChanged(null);
			}
		}
		
		public string Text {
			get {
				return text;
			}
			set {
				text = value;
				OnChanged(null);
			}
		}
		
		public string Caption {
			get {
				return caption;
			}
			set {
				caption = value;
				OnChanged(null);
			}
		}

		public bool GenerateReturnValue {
			get {
				return generateReturnValue;
			}
			set {
				generateReturnValue = value;
				OnChanged(null);
			}
		}

		public string VariableName {
			get {
				return variableName;
			}
			set {
				variableName = value;
				OnChanged(null);
			}
		}

		public bool GenerateSwitchCase {
			get {
				return generateSwitchCase;
			}
			set {
				generateSwitchCase = value;
				OnChanged(null);
			}
		}
		
		public void PreviewMessageBox()
		{
			MessageBox.Show(text, caption, messageBoxButtons, messageBoxIcon, messageBoxDefaultButton);
		}
		
		public string GenerateCode(string language) 
		{
			if (language == "C#") {
				string code = "MessageBox.Show(\"" + text.Replace("\n", "\\n").Replace("\r","").Replace("\"", "\\\"") + "\", \"" + 
				                                     caption + "\", MessageBoxButtons." + 
				                                     messageBoxButtons + ", MessageBoxIcon." + 
				                                     messageBoxIcon + ", MessageBoxDefaultButton." + 
				                                     messageBoxDefaultButton +");";
				if (generateReturnValue) {
					code = "DialogResult " + variableName + " = " + code;
					if (generateSwitchCase) {
						code += "\nswitch(" + variableName +") {\n";
						switch(messageBoxButtons) {
							case MessageBoxButtons.AbortRetryIgnore:
								code += "\tcase DialogResult.Abort:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.Retry:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.Ignore:\n";
								code += "\t\tbreak;\n";
								break;
							case MessageBoxButtons.OK:
								code += "\tcase DialogResult.OK:\n";
								code += "\t\tbreak;\n";
								break;
							case MessageBoxButtons.OKCancel:
								code += "\tcase DialogResult.OK:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.Cancel:\n";
								code += "\t\tbreak;\n";
								break;
							case MessageBoxButtons.RetryCancel:
								code += "\tcase DialogResult.Retry:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.Cancel:\n";
								code += "\t\tbreak;\n";
								break;
							case MessageBoxButtons.YesNo:
								code += "\tcase DialogResult.Yes:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.No:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.Ignore:\n";
								code += "\t\tbreak;\n";
								break;
							case MessageBoxButtons.YesNoCancel:
								code += "\tcase DialogResult.Yes:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.No:\n";
								code += "\t\tbreak;\n";
								code += "\tcase DialogResult.Cancel:\n";
								code += "\t\tbreak;\n";
								break;
						}
						code += "}";
					}
				}
				return code;
			} else if (language == "VBNET") {
				string code = "MessageBox.Show(\"" + text.Replace("\n", "\\n").Replace("\r","") + "\", \"" + 
				                                     caption + "\", MessageBoxButtons." + 
				                                     messageBoxButtons + ", MessageBoxIcon." + 
				                                     messageBoxIcon + ", MessageBoxDefaultButton." + 
				                                     messageBoxDefaultButton +")";
				if (generateReturnValue) {
					code = "Dim " + variableName + " As DialogResult = " + code;
					if (generateSwitchCase) {
						code += "\nSelect " + variableName +"\n";
						switch(messageBoxButtons) {
							case MessageBoxButtons.AbortRetryIgnore:
								code += "\tCase DialogResult.Abort\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.Retry\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.Ignore\n";
								code += "\t\t\n";
								break;
							case MessageBoxButtons.OK:
								code += "\tCase DialogResult.OK\n";
								code += "\t\t\n";
								break;
							case MessageBoxButtons.OKCancel:
								code += "\tCase DialogResult.OK\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.Cancel\n";
								code += "\t\t\n";
								break;
							case MessageBoxButtons.RetryCancel:
								code += "\tCase DialogResult.Retry\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.Cancel\n";
								code += "\t\t\n";
								break;
							case MessageBoxButtons.YesNo:
								code += "\tCase DialogResult.Yes\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.No\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.Ignore\n";
								code += "\t\t\n";
								break;
							case MessageBoxButtons.YesNoCancel:
								code += "\tCase DialogResult.Yes\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.No\n";
								code += "\t\t\n";
								code += "\tCase DialogResult.Cancel\n";
								code += "\t\t\n";
								break;
						}
						code += "End Select";
					}
				}
				return code;
			} else {
				throw new System.ArgumentException("Unknown language: " + language);
			}
		}
		
		void OnChanged(EventArgs e)
		{
			if (Changed != null) {
				Changed(this, e);
			}
		}
		
		public event EventHandler Changed;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -