- 博客(12)
- 资源 (7)
- 收藏
- 关注
翻译 C# 中的转意字符
C#中允许在字符串中通过转移字符插入一些特殊的字符。转意字符是以下划线(\)开头的一串字符。下面是C#中所有的转意字符: \a – 警告,产生蜂鸣 \b – 回退,退格 \f – 换页 \n – 换行 \r – 回车 \t – 水平制表符 \v – 垂直制表符 \’ – 单斜杠 \” – 双引号 \\ – 反斜杠
2017-01-23 11:26:02 1395
翻译 使用StringBuilder 比使用String 来组合连接字符串更加有效率
通常我们使用“+”操作符来组合字符串,这样十分方便。但是这样并不是十分有效率,因为每次组合成的新字符串都需要重新开一片内存空间存储。下面我们做一个简单的测试,将50000个整数组合成字符串:string s1 = "";for (int i = 0; i < 50000; i++) s1 = s1 + i.ToString();在测试环境张,这个循环花费了30430毫秒。
2017-01-23 11:01:46 926
翻译 #636 – 持续按住按键会多次触发键盘事件(Keyboard Events that Fire When A Key Is Held Down)
在Windows系统中,持续按住一个按键,相当于重复按下多次这个键。而且PreviewKeyDown, KeyDown 和 PreviewTextInput 事件也会重复的触发。你可以通过KeyEventArgs.IsRepeat 属性判断事件是第一次发生,还是持续按住按键重复发生的。加入我们在一个获得键盘输入焦点的TextBox 上持续按下“a”键,并获得了三次输入,那么我们获得的事件顺
2017-01-23 10:07:13 3037
翻译 #632 – 使用PreviewTextInput事件阻止用户输入(Block Input Using PreviewTextInput)
你可以使用控件的PreviewTextInput 事件来阻止控件接收某些输入的字符。要防止某个特定的字符输入到控件,你只要简单的设置TextCompositionEventArgs 类型参数的Handled 属性为true就可以。它将中断控件接收字符输入事件的路由。在XAML代码中注册事件:<TextBox Text="" HorizontalAlignment="Center" Wi
2017-01-18 15:42:50 3805 3
翻译 #630 – PreviewTextInput 和TextInput 事件(PreviewTextInput and TextInput Events)
除了PreviewKeyDown, KeyDown, PreviewKeyUp 和KeyUp这4个事件之外,UIElement 对键盘输入还会发送另外两个事件。无论是单独按下某个键还是使用组合键,只要当控件收到某个输入文本,PreviewTextInput 和TextInput 事件就会触发。如果控件按下,但是并为导致键盘发送输入文本,那么这两个事件不会触发(例如回退键)。下面是事件触发的序列
2017-01-17 17:04:31 2031
翻译 使用检查数据(int,double,float等)溢出,并抛出异常
在默认情况下,当溢出发生的时候,系统会自动的对结果进行截断。比如int n1 = int.MaxValue; // 2147483647 (0x7FFFFFFF)n1 = n1 + 1; // Now -2147483648 (wrapped) 加1后溢出,被截断你也可以通过抛出一个异常,而非截断。想要这样做,你需要使用checked 关键字:
2017-01-16 18:15:00 6278
翻译 #628 – 当使用ALT键的时候按键事件序列(Key Up/Down Sequence When Using ALT Key)
当使用ALT键和其他键组成组合功能键的时候,按键事件中KeyEventArgs 的Key 属性的值为Key.System,而真正按下的按键的值在SystemKey 属性中(无论是ALT键还是和其组合的键)。举个例子,如果在一个TextBox 控件上按下Alt-Q 组合键,事件发生的序列以及键值如下: -PreviewKeyDown, Key = System, SystemKey =
2017-01-16 17:00:17 494
翻译 #625 事件的Timestamp 属性
许多键盘事件和鼠标点击事件的事件参数中都有Timestamp 属性,例如KeyEventArgs 。这个属性给出了一个鼠标或者键盘按下或起来的相对时间。Timestamp 属性是int 类型,并不是DateTime 类型。它的值表示的是从操作系统启动到事件发生所经历的毫秒数。当随着时间的增长,如果毫秒数超过了整型所能表达的最大值,它的值将会被设置为0。所以它最多能表示大约24.9天的时间。
2017-01-11 16:50:29 1350
翻译 #611 – 在退出事件中设置退出码(Set Application Exit Code in Exit Event Handler)
在Windows系统中,通过命令行运行可执行程序,通过判断退出码可以辨别程序是否是成功的正常退出。一般情况下,0表示程序正常退出,其他非负数表示退出时出错。在WPF中的退出事件中,通过设置ExitEventArgs 参数的ApplicationExitCode 属性可以设置退出码。private void Application_Exit(object sender, ExitEventA
2017-01-09 18:06:57 619
翻译 #607 – 实例的事件处理函数vs. 类的事件处理函数(An Instance Handler vs. A Class Handler)
在WPF中,你定义一个事件的处理函数,通常是一个类的实例的触发的事件进行处理——比如点击某个按钮后执行该按钮注册的事件响应函数。例如下面的代码,为一个Button类的实例定义一个事件处理函数。你也可以定义类的事件处理函数,对应所有这个类型的实例,而不是单个实例(使用RegisterClassHandler 静态函数)。任何一个实例触发事件都会执行这个事件处理函数。举个例子,我们可以定
2017-01-06 17:13:47 421
原创 一个自定义的WPF ComboBox模板
<Image Source="../../Icons/arrow_White.png" Width="8" Margin="8,0" Visibility="{Binding ElementName=filterCom, Path=IsEnabled, Converter={StaticResource boo
2017-01-04 10:48:12 6124
翻译 #606 – 重用(另一个类中)已经存在的路由事件(Reusing an Existing Routed Event in Your Class)
当你准备定义一个路由事件的时候,你有两种方法:自己注册一个新的路由事件,或者使用一个已经存在的路由事件。你可以通过调用一个已经存在的路由事件的AddOwner 方法使用这个事件。public class MyButton : Button{ public static readonly RoutedEvent MyTextChangedEvent; static My
2017-01-03 11:50:41 402
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人