我正在WinForms .Net 2.0应用程序中开发类似应用程序的自定义HyperTerminal.我在Panel中有一个多行TextBox,您可以在其中与硬件设备进行交互.
我的客户希望拥有一个自定义Caret,一个填充矩形,大小为一个字符空间,而不是默认的垂直线.
我知道.Net默认情况下不提供执行此操作的选项,但必须有一些Windows功能才能执行此操作.
新的C#6.0nameof在使用PropertyChanged以下内容传播属性更改的模式中非常出色:
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty= value;
OnPropertyChanged(nameof(MyProperty));
}
}
Run Code Online (Sandbox Code Playgroud)
在监听属性更改时,我使用它(是的,即使是丑陋的硬编码字符串):
private void OnMyObjectPropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case "MyProperty":
DoSomething();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
使用新的nameof表达式,这段代码会编译/工作吗?
private void OnMyObjectPropertyChanged(object sender, PropertyChangedEventArgs args)
{
switch (args.PropertyName)
{
case nameof(MyObject.MyProperty):
DoSomething();
break;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个在.Net 2.0 SP2上运行良好的应用程序,但无法在.NET 2.0 RTM上正常运行.(仅供参考:当调用方法为托管DLL时,它会失败,该DLL是用于USB编程的本机DLL的包装器).
我知道你可以在C#.NET应用程序的app.config中提供支持的运行时
<startup>
<supportedRuntime version="v2.0.5727" />
<supportedRuntime version="v4.0" />
</startup>
Run Code Online (Sandbox Code Playgroud)
但是,是否也可以指定特定的Service Pack版本?
谢谢!
编辑:我现在确定哪个方法在2.0和2.0 SP2之间失败.它是在2.0 SP1中添加的WaitHandle.WaitOne(int).
对于遇到问题的其他人来说,编译器没有说什么,但如果你使用有问题的运行时确定可执行文件,它确实会给你确切的错误.
例如:
Warning: System.MissingMethodException: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'. while resolving 0xa0000e1 - System.Threading.WaitHandle.WaitOne.
11/11/2010 01:54:07 [3620]: Method not found: 'Boolean System.Threading.WaitHandle.WaitOne(Int32)'. while compiling method XXX
Run Code Online (Sandbox Code Playgroud)
罗吉尔
我有一个带有目录页面的简单NSIS脚本,用户可以在其中选择要安装应用程序的目录.请参阅下面的示例,如果已安装该应用程序,则会从注册表中获取值,或者使用www root或"program files\publisher\product name".
问题是,当我单击目录页面上的浏览并选择特定目录(例如:c:\ test)时,当我关闭浏览对话框时,定义PRODUCT_NAME会自动添加到路径中:c:\ test\Invoice Management Workflow .如何避免自动添加产品名称?
!define PRODUCT_NAME "Invoice Management Workflow"
!insertmacro MUI_DEFINES
!insertmacro MUI_PAGE_WELCOME
Page directory DirPre
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_INSTFILES
Function DirPre
; set the INSTDIR to
ReadRegStr $0 HKLM "Software\${PRODUCT_PUBLISHER}\${PRODUCT_NAME}" "InstallDirectory"
${If} $0 != ""
StrCpy $INSTDIR $0
Abort
${Else}
; get the install dir from reg
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\InetStp" "PathWWWRoot"
${If} $0 != ""
StrCpy $INSTDIR $0
${EndIf}
${EndIf}
FunctionEnd
Run Code Online (Sandbox Code Playgroud)