小编ser*_*hio的帖子

DisplayNameAttribute的本地化

我正在寻找一种方法来本地化PropertyGrid中显示的属性名称.可以使用DisplayNameAttribute属性"覆盖"属性的名称.不幸的是,属性不能有非常量表达式.所以我不能使用强类型资源,例如:

class Foo
{
   [DisplayAttribute(Resources.MyPropertyNameLocalized)]  // do not compile
   string MyProperty {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

我浏览了一下,发现了一些从DisplayNameAttribute继承的建议,以便能够使用资源.我最终会得到如下代码:

class Foo
{
   [MyLocalizedDisplayAttribute("MyPropertyNameLocalized")] // not strongly typed
   string MyProperty {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

但是我失去了强大的类型资源优势,这绝对不是一件好事.然后我遇到了DisplayNameResourceAttribute,这可能是我正在寻找的.但它应该在Microsoft.VisualStudio.Modeling.Design命名空间中,我找不到我应该为此命名空间添加的引用.

有人知道是否有更好的方法以一种好的方式实现DisplayName本地化?或者是否有使用Microsoft似乎用于Visual Studio的方法?

c# attributes localization visual-studio-2008

119
推荐指数
7
解决办法
8万
查看次数

Application.ThreadException和AppDomain.CurrentDomain.UnhandledException有什么区别?

好吧,这很简单:

  • Application.ThreadException和之间有什么区别
    AppDomain.CurrentDomain.UnhandledException

  • 我需要处理两者吗?

谢谢!

.net c# exception-handling winforms

103
推荐指数
3
解决办法
3万
查看次数

WPF中的Application.DoEvents()在哪里?

我有以下示例代码,每次按下按钮时缩放:

XAML:

<Window x:Class="WpfApplication12.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">

    <Canvas x:Name="myCanvas">

        <Canvas.LayoutTransform>
            <ScaleTransform x:Name="myScaleTransform" />
        </Canvas.LayoutTransform> 

        <Button Content="Button" 
                Name="myButton" 
                Canvas.Left="50" 
                Canvas.Top="50" 
                Click="myButton_Click" />
    </Canvas>
</Window>
Run Code Online (Sandbox Code Playgroud)

*的.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void myButton_Click(object sender, RoutedEventArgs e)
    {
        Console.WriteLine("scale {0}, location: {1}", 
            myScaleTransform.ScaleX,
            myCanvas.PointToScreen(GetMyByttonLocation()));

        myScaleTransform.ScaleX =
            myScaleTransform.ScaleY =
            myScaleTransform.ScaleX + 1;

        Console.WriteLine("scale {0}, location: {1}",
            myScaleTransform.ScaleX,
            myCanvas.PointToScreen(GetMyByttonLocation()));
    }

    private Point GetMyByttonLocation()
    {
        return new Point(
            Canvas.GetLeft(myButton),
            Canvas.GetTop(myButton));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出是:

scale 1, location: …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf xaml

82
推荐指数
5
解决办法
8万
查看次数

你如何"回滚"Mercurial的最后一次提交?

我有一个Mercurial存储库,我只在本地使用...这是我的个人用法(所以我不会"推"到任何地方).

我提交了3个文件,但之后我明白我应该提交4个文件...

有没有办法"回滚"我的最后一次(最新的,只有一次)提交,并"重新发送"它与正确的文件?

(我不知道为什么,但我的" 修改当前修订版 "选项不活动,所以我不能用它...)

mercurial commit rollback

65
推荐指数
3
解决办法
9万
查看次数

WPF资源中的整数值?

是否可以在WPF控件资源中设置整数值?!

<UserControl.Resources>

    <SolidColorBrush x:Key="MyLineBrush" Color="LightGreen" />

    ??? <Integer x:Key="MyStrokeThickness" Value="2" /> ???


    <Style TargetType="local:MyLine" x:Key="MyLineStyleKey">    

        <Setter Property="Stroke" 
            Value="{DynamicResource MyLineBrush}"/>

        <Setter Property="StrokeThickness" 
            Value="{DynamicResource MyStrokeThickness}"/>

    </Style>
Run Code Online (Sandbox Code Playgroud)

为了动态修改MyLineBrushMyStrokeThickness值......

wpf wpf-controls

46
推荐指数
2
解决办法
2万
查看次数

用英语强制例外语言

我的Visual Studio 2005是法语版,安装在法语操作系统上.我在调试或运行时收到的所有异常也都是用法语获得的.

但是,我可以做一些异常消息是英文的吗?对于护目镜,讨论等

我尝试了以下方法:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");
throw new NullReferenceException();
Run Code Online (Sandbox Code Playgroud)

获得

你调用的对象是空的.

这当然很酷......但是,当我在法国项目上工作时,我不会硬编码强制Thread.CurrentUICulture为英文.我希望英语更改仅在我的本地计算机上,并且不要更改项目属性.

是否可以在不修改应用程序代码的情况设置异常语言?


在VS 2008中,将工具 - >选项 - >环境 - >国际设置 - >语言设置为"英语"wnd抛出相同的异常获取ex message en French,但是: alt text http://lh4.ggpht.com/ _1TPOP7DzY1E/S1V62xcvHAI/AAAAAAAAC7o/ckLDVFPKh5Y/S800/exception.png

.net localization visual-studio

40
推荐指数
4
解决办法
1万
查看次数

VisualStudio错误?

在VS 2010中创建了一个新WinForm项目.添加了一个新的UserControl WPF.

出现2个编译时错误:

错误1类型'System.Windows.Markup.IQueryAmbient'在未引用的程序集中定义.您必须添加对程序集'System.Xaml,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的引用.D:\ Projets\WindowsFormsApplication2\UserControl1.xaml.cs 20 26 WindowsFormsApplication2

错误2在名称空间"System.Windows.Markup"中找不到类型名称"IComponentConnector".此类型已转发到程序集'System.Xaml,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'考虑添加对该程序集的引用.D:\ Projets\WindowsFormsApplication2\obj\x86\Debug\UserControl1.g.cs 41 100 WindowsFormsApplication2

NB.

喜欢参考PresenationCore.dll,PresenationFramework.dll,WindowsBase.dll添加新的用户控件WPF的WinForm的项目时自动添加,所以为什么不System.Xaml.dll呢?

==============

Microsoft Connect上报告了错误.

.net wpf visual-studio winforms

34
推荐指数
2
解决办法
1万
查看次数

Visual Studio"在文件中查找"不起作用

当我在整个解决方案中在文件中查找(Ctrl + Shift + F)时,Visual Studio(2010,旗舰版)找不到任何内容.但是,它在搜索" 当前文档"或" 当前项目"时发现2次.

我看到输出窗口中的"搜索的总文件数"是一个随机数,与我解决方案中的文件数不对应(要小得多).

我已经做了devenv /resetsettings但这没有帮助.

在"所有解决方案"中连续2次搜索的输出示例:

找到所有"缩放 - ",子文件夹,保持修改后的文件打开,查找结果1,"整个解决方案","*.vb"
匹配行:0匹配文件:0搜索到的文件总数:24
查找已停止进行中.

找到所有"缩放 - ",子文件夹,保持修改后的文件打开,查找结果1,"整个解决方案","*.vb"匹配行:0匹配文件:0搜索到的总文件数:32
查找已停止正在进行中.

我不知道为什么它说"查找已停止",因为我等待搜索结束(不要按任何按钮).

.net visual-studio-2010 visual-studio

34
推荐指数
6
解决办法
2万
查看次数

在Dispose()中设置obj = null(Nothing)的意义吗?

在方法中将自定义对象设置为null(Nothing在VB.NET中)是否有意义Dispose()?这可以防止内存泄漏或无用吗?!

让我们考虑两个例子:

public class Foo : IDisposable
{
    private Bar bar; // standard custom .NET object

    public Foo(Bar bar) {
        this.bar = bar;
    }
    public void Dispose() {
        bar = null; // any sense?
    }
}

public class Foo : RichTextBox
{
    // this could be also: GDI+, TCP socket, SQl Connection, other "heavy" object
    private Bitmap backImage; 

    public Foo(Bitmap backImage) {
        this.backImage = backImage;
    }

    protected override void Dispose(bool disposing) {
        if (disposing) …
Run Code Online (Sandbox Code Playgroud)

.net c# vb.net dispose memory-management

32
推荐指数
2
解决办法
5786
查看次数

Control PointToClient()与PointToScreen()

恕我直言,MSDN没有提供Control.PointToScreen(链接)和Control.PointToClient(链接)方法之间的明显区别.

是否有人可以用一些简单的词语解释这些方法之间的区别.特别是我不清楚"客户"的概念.

我理解PointToScreen给定点的实际屏幕坐标(屏幕左上角的[0,0]).

例如,调试我的一些代码

?click.Location 
{X = 3 Y = 9}

?shapeSender.PointToClient(click.Location)
{X = -470 Y = -565}

?shapeSender.PointToScreen(click.Location)
{X = 476 Y = 583}
Run Code Online (Sandbox Code Playgroud)

谢谢.

.net winforms

30
推荐指数
3
解决办法
3万
查看次数