- 浏览: 170169 次
- 性别:
- 来自: 杭州
最新评论
文章列表
效果:
XAML代码:
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.Resources>
<Style TargetType="Button" x:Key="Bold">
<Setter Prop ...
参考:
《Evenly-sized buttons according to content of largest button》
《Grid.IsSharedSizeScope Attached Property》
效果图:
XAML代码:
<WrapPanel Grid.IsSharedSizeScope="True" Width="Auto">
<Grid ShowGridLines="True" Width="Auto">
...
前段时间学习了 Robot Framework IDE (RIDE) 的源码,还照着样实现了一个 .Net 平台的RIDE。
有几点感受比较深:
1. 动态和静态语言的区别
学习 RIDE 源码前几乎没有用动态语言编写过上规模的程序。对 RIDE 源码的学习,让我感受到:
1.1 Python 灵活的语言特性可以非常大的加快开发速度。
如:无需定义“接口”,就能将不同类型的数据传进同一个方法(只要参数类型已实现必需的那些属性或方法)。但这也可能会带来不小的问题:
1.2 (Duck Typing) 没有“接口”的约束,就会让其他程序员在扩展原有代码时非常困难 ...
参考:
《How to: Create Custom Configuration Sections Using ConfigurationSection》
《Custom Configuration Sections for Lazy Coders》
《How to: Add CData or Text in a ConfigurationElement》
示例配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<confi ...
参考:《When to use constants, settings.settings and Resources.resx》
问题:声明一个不常改变,近似“常量”的字符串时,这个字符串应该声明在何处?
一般做法:
字符串永不改变,只在一个类内部使用
声明在这个类内部,和同一个类中的其它常量放一起
字符串永不改变,会被多个类使用
将这类字符串声明在另外一个单独的类中
又被 Python 的字符编码虐了。
平台:
Python27,IronPython
场景:
读取包含非 ASCII 字符的 UTF-8 编码的纯文本文件。
将包含非 ASCII 字符的 Unicode 字符串写入纯文本文件。
细节:
打开文件可以用 open ,也可以用 module 'codecs' 下的 'open'(推荐使用)。codecs.open 的功能更强大,可以指定读取解析文件内容时所使用的编码格式。
如果读取的文件
参考:
StyleCop vs FxCop
C# Code Reviews using StyleCop - Detailed Article
How to Use FxCop
FxCop Warnings
StyleCop Rules
7 Steps to Write Your Own Custom Rule using FxCop
FxCop 检测的是编译后的程序集。所以有些只在源代码文件上才能体现出来的问题检测不到。如源码排版布局、注释、某些编译器会做优化的代码等。
WinForm 中 Control.SuspendLayout, Control.ResumeLayout, PerformLayout 之间的关系
- 博客分类:
- WPF & WinForm
- C# .Net
一般情况:
在VS视图模式下设计窗体对象后,其 InitializeComponent 方法体一般如下:
private void InitializeComponent(){
// 创建各控件实例
this.SuspendLayout();
// 设置各控件具体属性
this.ResumeLayout(false);
this.PerformLayout();
}
官方解释:
Control.SuspendLayout
临时挂起控件的布局逻辑。
Control.ResumeLayout
恢 ...
以 C# 中的 System.Drawing.FontStyle 为例。
如果需要同时有多种效果,
如:“粗体”和“下划线”的效果,可以用按位或(|)
FontStyle style = FontStyle.Bold | FontStyle.Underline;
如果需要去除 style 里的某一种效果,
如:去除“下划线”的效果,可以用按位取反(~)和按位与(&)
style = style & ~FontStyle.Underline;
原理:
public enum FontStyle
{
Regular = ...
需要安装 python-ldap
Windows上安装64位版本,可从这下载安装包:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#python-ldap
网上搜到的方式大多太复杂。
以下是一种比较简单的方式。
但还是比用 C# 复杂“一点”:需要指定用户名所在域。
(《C# 用 LDAP 验证用户名和密码》).
import ldap
ldapServer = 'LDAP://localhost'
domain = 'd1'
userName = 'Name1'
domainUserName = domain ...
ldapBaseDnPath = "LDAP://localhost/DC=dc3,DC=dc2,DC=dc1"
// 'LDAP' 这4个字母必须大写
userName = "Name1"
password = "DoNotUseMe"
using (DirectoryEntry de = new DirectoryEntry(ldapBaseDnPath, userName, password)) {
try {
object connected = de.NativeObject;
...
参考:http://blog.csdn.net/nohackcc/article/details/9770593
1. 用 generateDS 解析 XSD 文件,生成相应的 Python module.
从命令行运行 generateDS.py,生成 Python module
2. 用 上一步生成的 module 解析 XML 文件
import robot_xsd
logFile = 'C:\temp\ou ...
环境:Win7 + Robot Framework + IE9
任务:下载网页中链接所指向的文件
参考:File Downloads With Selenium — Mission Impossible?
过程:
阶段一:
概述:用 MS UI Automation 操作浏览器控件。
MS UI Automation + NRobotRemote + Selenium2Library + Robot Fra ...
使用场景:记录异常(错误)信息,方便定位调试。
配置:
1. app.config
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<appSetting ...
假设在C#中有一个IronPython的对象 ‘obj1’。
现在要得到该对象的类名,不是在C#中的类名,而是它在IronPython中的类名。
(如果要得到在C#中的类名,直接调用对象的GetType()方法,就能获得对应的Type)
dynamic obj1;
Microsoft.Scripting.Hosting.ScriptEngine engine = IronPython.Hosting.Python.CreateEngine();
Microsoft.Scripting.Hosting.ObjectOperations operations = engine ...