猿问

如何定义TextBox输入限制?

如何定义TextBox输入限制?

如何限制TextBox仅接受大写字母,例如数字,或禁止放置任何特殊字符?

当然,抓住TextInput事件并在此处理文本是一块蛋糕,但这是否是正确的方法呢?


ABOUTYOU
浏览 722回答 3
3回答

尚方宝剑之说

我更改了VitalyB的代码来支持Color Themes。如果它不符合RegEx脚本,它只会突出显示文本框,而不是阻止用户输入。文本框将是没有交互的主题默认值,然后默认为浅绿色或红色,具体取决于设置输入后的值。您还可以设置失败并以编程方式传递颜色:b:ColorMasking.PassColor&nbsp;=&nbsp;"Hexadecimal&nbsp;Value"b:ColorMasking.FailColor&nbsp;=&nbsp;"Hexadecimal&nbsp;Value"课程如下:public&nbsp;class&nbsp;ColorMasking&nbsp;:&nbsp;DependencyObject{ &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;readonly&nbsp;DependencyPropertyKey&nbsp;_maskExpressionPropertyKey&nbsp;=&nbsp;DependencyProperty.RegisterAttachedReadOnly("MaskExpression", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(Regex), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(ColorMasking), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;FrameworkPropertyMetadata()); &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Identifies&nbsp;the&nbsp;<see&nbsp;cref="Mask"/>&nbsp;dependency&nbsp;property. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;readonly&nbsp;DependencyProperty&nbsp;PassColorProperty&nbsp;=&nbsp;DependencyProperty.RegisterAttached("PassColor", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(string), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(ColorMasking), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;PropertyMetadata("#99FF99")); &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;SetPassColor(DependencyObject&nbsp;obj,&nbsp;string&nbsp;passColor) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.SetValue(PassColorProperty,&nbsp;passColor); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;GetPassColor(DependencyObject&nbsp;obj) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(string)obj.GetValue(PassColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;readonly&nbsp;DependencyProperty&nbsp;FailColorProperty&nbsp;=&nbsp;DependencyProperty.RegisterAttached("FailColor", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(string), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(ColorMasking), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;PropertyMetadata("#FFCCFF")); &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;SetFailColor(DependencyObject&nbsp;obj,&nbsp;string&nbsp;failColor) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;obj.SetValue(FailColorProperty,&nbsp;failColor); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;GetFailColor(DependencyObject&nbsp;obj) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(string)obj.GetValue(FailColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;readonly&nbsp;DependencyProperty&nbsp;MaskProperty&nbsp;=&nbsp;DependencyProperty.RegisterAttached("Mask", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(string), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typeof(ColorMasking), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;new&nbsp;FrameworkPropertyMetadata(OnMaskChanged)); &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;OnPassColorChanged(DependencyObject&nbsp;dependencyObject,&nbsp;DependencyPropertyChangedEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;textBox&nbsp;=&nbsp;dependencyObject&nbsp;as&nbsp;TextBox; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;color&nbsp;=&nbsp;e.NewValue&nbsp;as&nbsp;string; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.SetValue(PassColorProperty,&nbsp;color); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Identifies&nbsp;the&nbsp;<see&nbsp;cref="MaskExpression"/>&nbsp;dependency&nbsp;property. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</summary> &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;readonly&nbsp;DependencyProperty&nbsp;MaskExpressionProperty&nbsp;=&nbsp;_maskExpressionPropertyKey.DependencyProperty; &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Gets&nbsp;the&nbsp;mask&nbsp;for&nbsp;a&nbsp;given&nbsp;<see&nbsp;cref="TextBox"/>. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<param&nbsp;name="textBox"> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;<see&nbsp;cref="TextBox"/>&nbsp;whose&nbsp;mask&nbsp;is&nbsp;to&nbsp;be&nbsp;retrieved. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</param> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<returns> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;mask,&nbsp;or&nbsp;<see&nbsp;langword="null"/>&nbsp;if&nbsp;no&nbsp;mask&nbsp;has&nbsp;been&nbsp;set. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</returns> &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;string&nbsp;GetMask(TextBox&nbsp;textBox) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(textBox&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;ArgumentNullException("textBox"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;textBox.GetValue(MaskProperty)&nbsp;as&nbsp;string; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Sets&nbsp;the&nbsp;mask&nbsp;for&nbsp;a&nbsp;given&nbsp;<see&nbsp;cref="TextBox"/>. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<param&nbsp;name="textBox"> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;<see&nbsp;cref="TextBox"/>&nbsp;whose&nbsp;mask&nbsp;is&nbsp;to&nbsp;be&nbsp;set. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</param> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<param&nbsp;name="mask"> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;mask&nbsp;to&nbsp;set,&nbsp;or&nbsp;<see&nbsp;langword="null"/>&nbsp;to&nbsp;remove&nbsp;any&nbsp;existing&nbsp;mask&nbsp;from&nbsp;<paramref&nbsp;name="textBox"/>. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</param> &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;SetMask(TextBox&nbsp;textBox,&nbsp;string&nbsp;mask) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(textBox&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;ArgumentNullException("textBox"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.SetValue(MaskProperty,&nbsp;mask); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;Gets&nbsp;the&nbsp;mask&nbsp;expression&nbsp;for&nbsp;the&nbsp;<see&nbsp;cref="TextBox"/>. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</summary> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<remarks> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;This&nbsp;method&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;retrieve&nbsp;the&nbsp;actual&nbsp;<see&nbsp;cref="Regex"/>&nbsp;instance&nbsp;created&nbsp;as&nbsp;a&nbsp;result&nbsp;of&nbsp;setting&nbsp;the&nbsp;mask&nbsp;on&nbsp;a&nbsp;<see&nbsp;cref="TextBox"/>. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</remarks> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<param&nbsp;name="textBox"> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;<see&nbsp;cref="TextBox"/>&nbsp;whose&nbsp;mask&nbsp;expression&nbsp;is&nbsp;to&nbsp;be&nbsp;retrieved. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</param> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;<returns> &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;The&nbsp;mask&nbsp;expression&nbsp;as&nbsp;an&nbsp;instance&nbsp;of&nbsp;<see&nbsp;cref="Regex"/>,&nbsp;or&nbsp;<see&nbsp;langword="null"/>&nbsp;if&nbsp;no&nbsp;mask&nbsp;has&nbsp;been&nbsp;applied&nbsp;to&nbsp;<paramref&nbsp;name="textBox"/>. &nbsp;&nbsp;&nbsp;&nbsp;///&nbsp;</returns> &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;Regex&nbsp;GetMaskExpression(TextBox&nbsp;textBox) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(textBox&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;ArgumentNullException("textBox"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;textBox.GetValue(MaskExpressionProperty)&nbsp;as&nbsp;Regex; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;SetMaskExpression(TextBox&nbsp;textBox,&nbsp;Regex&nbsp;regex) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.SetValue(_maskExpressionPropertyKey,&nbsp;regex); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;OnMaskChanged(DependencyObject&nbsp;dependencyObject,&nbsp;DependencyPropertyChangedEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;textBox&nbsp;=&nbsp;dependencyObject&nbsp;as&nbsp;TextBox; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;mask&nbsp;=&nbsp;e.NewValue&nbsp;as&nbsp;string; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.PreviewTextInput&nbsp;-=&nbsp;textBox_PreviewTextInput; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.PreviewKeyDown&nbsp;-=&nbsp;textBox_PreviewKeyDown; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataObject.RemovePastingHandler(textBox,&nbsp;Pasting); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataObject.RemoveCopyingHandler(textBox,&nbsp;NoDragCopy); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommandManager.RemovePreviewExecutedHandler(textBox,&nbsp;NoCutting); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(mask&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.ClearValue(MaskProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.ClearValue(MaskExpressionProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.SetValue(MaskProperty,&nbsp;mask); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SetMaskExpression(textBox,&nbsp;new&nbsp;Regex(mask,&nbsp;RegexOptions.Compiled&nbsp;|&nbsp;RegexOptions.IgnorePatternWhitespace)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.PreviewTextInput&nbsp;+=&nbsp;textBox_PreviewTextInput; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.PreviewKeyDown&nbsp;+=&nbsp;textBox_PreviewKeyDown; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataObject.AddPastingHandler(textBox,&nbsp;Pasting); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataObject.AddCopyingHandler(textBox,&nbsp;NoDragCopy); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CommandManager.AddPreviewExecutedHandler(textBox,&nbsp;NoCutting); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;NoCutting(object&nbsp;sender,&nbsp;ExecutedRoutedEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.Command&nbsp;==&nbsp;ApplicationCommands.Cut) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.Handled&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;NoDragCopy(object&nbsp;sender,&nbsp;DataObjectCopyingEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.IsDragDrop) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.CancelCommand(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;textBox_PreviewTextInput(object&nbsp;sender,&nbsp;TextCompositionEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;textBox&nbsp;=&nbsp;sender&nbsp;as&nbsp;TextBox; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;maskExpression&nbsp;=&nbsp;GetMaskExpression(textBox); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;passHex&nbsp;=&nbsp;(string)textBox.GetValue(PassColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;failHex&nbsp;=&nbsp;(string)textBox.GetValue(FailColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;passColor&nbsp;=&nbsp;Extensions.ToColorFromHex(passHex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;failColor&nbsp;=&nbsp;Extensions.ToColorFromHex(failHex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(maskExpression&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;proposedText&nbsp;=&nbsp;GetProposedText(textBox,&nbsp;e.Text); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!maskExpression.IsMatch(proposedText)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(failColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(passColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;textBox_PreviewKeyDown(object&nbsp;sender,&nbsp;KeyEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;textBox&nbsp;=&nbsp;sender&nbsp;as&nbsp;TextBox; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;maskExpression&nbsp;=&nbsp;GetMaskExpression(textBox); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;passHex&nbsp;=&nbsp;(string)textBox.GetValue(PassColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;failHex&nbsp;=&nbsp;(string)textBox.GetValue(FailColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;passColor&nbsp;=&nbsp;Extensions.ToColorFromHex(passHex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;failColor&nbsp;=&nbsp;Extensions.ToColorFromHex(failHex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(maskExpression&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;proposedText&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//pressing&nbsp;space&nbsp;doesn't&nbsp;raise&nbsp;PreviewTextInput,&nbsp;reasons&nbsp;here&nbsp;http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/446ec083-04c8-43f2-89dc-1e2521a31f6b?prof=required &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.Key&nbsp;==&nbsp;Key.Space) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proposedText&nbsp;=&nbsp;GetProposedText(textBox,&nbsp;"&nbsp;"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Same&nbsp;story&nbsp;with&nbsp;backspace &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(e.Key&nbsp;==&nbsp;Key.Back) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proposedText&nbsp;=&nbsp;GetProposedTextBackspace(textBox); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(proposedText&nbsp;!=&nbsp;null&nbsp;&&&nbsp;!maskExpression.IsMatch(proposedText)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(failColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(passColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;void&nbsp;Pasting(object&nbsp;sender,&nbsp;DataObjectPastingEventArgs&nbsp;e) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextBox&nbsp;textBox&nbsp;=&nbsp;sender&nbsp;as&nbsp;TextBox; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;maskExpression&nbsp;=&nbsp;GetMaskExpression(textBox); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;passHex&nbsp;=&nbsp;(string)textBox.GetValue(PassColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;failHex&nbsp;=&nbsp;(string)textBox.GetValue(FailColorProperty); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;passColor&nbsp;=&nbsp;Extensions.ToColorFromHex(passHex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;failColor&nbsp;=&nbsp;Extensions.ToColorFromHex(failHex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(maskExpression&nbsp;==&nbsp;null) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.DataObject.GetDataPresent(typeof(string))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;pastedText&nbsp;=&nbsp;e.DataObject.GetData(typeof(string))&nbsp;as&nbsp;string; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;proposedText&nbsp;=&nbsp;GetProposedText(textBox,&nbsp;pastedText); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!maskExpression.IsMatch(proposedText)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(failColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(passColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textBox.Background&nbsp;=&nbsp;new&nbsp;SolidColorBrush(failColor); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;string&nbsp;GetProposedTextBackspace(TextBox&nbsp;textBox) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;text&nbsp;=&nbsp;GetTextWithSelectionRemoved(textBox); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(textBox.SelectionStart&nbsp;>&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;text.Remove(textBox.SelectionStart&nbsp;-&nbsp;1,&nbsp;1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;text; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;string&nbsp;GetProposedText(TextBox&nbsp;textBox,&nbsp;string&nbsp;newText) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;text&nbsp;=&nbsp;GetTextWithSelectionRemoved(textBox); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;text.Insert(textBox.CaretIndex,&nbsp;newText); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;text; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;static&nbsp;string&nbsp;GetTextWithSelectionRemoved(TextBox&nbsp;textBox) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;text&nbsp;=&nbsp;textBox.Text; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(textBox.SelectionStart&nbsp;!=&nbsp;-1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text&nbsp;=&nbsp;text.Remove(textBox.SelectionStart,&nbsp;textBox.SelectionLength); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;text; &nbsp;&nbsp;&nbsp;&nbsp;}}要运行,脚本需要一个由Aaron C编写的类,:http://www.wiredprairie.us/blog/index.php/archives/659如果网站被移动,代码如下:public&nbsp;static&nbsp;class&nbsp;Extensions{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;SetFromHex(this&nbsp;Color&nbsp;c,&nbsp;string&nbsp;hex) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Color&nbsp;c1&nbsp;=&nbsp;ToColorFromHex(hex); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.A&nbsp;=&nbsp;c1.A; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.R&nbsp;=&nbsp;c1.R; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.G&nbsp;=&nbsp;c1.G; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c.B&nbsp;=&nbsp;c1.B; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;Color&nbsp;ToColorFromHex(string&nbsp;hex) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(string.IsNullOrEmpty(hex)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;ArgumentNullException("hex"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;remove&nbsp;any&nbsp;"#"&nbsp;characters &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while&nbsp;(hex.StartsWith("#")) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hex&nbsp;=&nbsp;hex.Substring(1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;num&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;get&nbsp;the&nbsp;number&nbsp;out&nbsp;of&nbsp;the&nbsp;string &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!Int32.TryParse(hex,&nbsp;System.Globalization.NumberStyles.HexNumber,&nbsp;null,&nbsp;out&nbsp;num)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw&nbsp;new&nbsp;ArgumentException("Color&nbsp;not&nbsp;in&nbsp;a&nbsp;recognized&nbsp;Hex&nbsp;format."); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int[]&nbsp;pieces&nbsp;=&nbsp;new&nbsp;int[4]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(hex.Length&nbsp;>&nbsp;7) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[0]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;24)&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[1]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;16)&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[2]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;8)&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[3]&nbsp;=&nbsp;(num&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(hex.Length&nbsp;>&nbsp;5) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[0]&nbsp;=&nbsp;255; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[1]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;16)&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[2]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;8)&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[3]&nbsp;=&nbsp;(num&nbsp;&&nbsp;0x000000ff); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(hex.Length&nbsp;==&nbsp;3) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[0]&nbsp;=&nbsp;255; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[1]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;8)&nbsp;&&nbsp;0x0000000f); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[1]&nbsp;+=&nbsp;pieces[1]&nbsp;*&nbsp;16; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[2]&nbsp;=&nbsp;((num&nbsp;>>&nbsp;4)&nbsp;&&nbsp;0x000000f); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[2]&nbsp;+=&nbsp;pieces[2]&nbsp;*&nbsp;16; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[3]&nbsp;=&nbsp;(num&nbsp;&&nbsp;0x000000f); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pieces[3]&nbsp;+=&nbsp;pieces[3]&nbsp;*&nbsp;16; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;Color.FromArgb((byte)pieces[0],&nbsp;(byte)pieces[1],&nbsp;(byte)pieces[2],&nbsp;(byte)pieces[3]); &nbsp;&nbsp;&nbsp;&nbsp;}}
随时随地看视频慕课网APP
我要回答