小编Mil*_*ian的帖子

如何在C#,.NET中播放声音

我有一个用C#/ .NET编写的Windows应用程序.

单击按钮时如何播放特定声音?

.net c# audio

105
推荐指数
5
解决办法
20万
查看次数

在WinForms应用程序中找到集中控件的首选方法是什么?

找到当前在WinForms中接收用户(键盘)输入的控件的首选/最简单方法是什么?

到目前为止,我已经提出以下建议:

public static Control FindFocusedControl(Control control)
{
    var container = control as ContainerControl;
    return (null != container
        ? FindFocusedControl(container.ActiveControl)
        : control);
}
Run Code Online (Sandbox Code Playgroud)

从表单中,可以简单地称为(在.NET 3.5+中甚至可以将其定义为表单上的扩展方法) -

var focused = FindFocusedControl(this);
Run Code Online (Sandbox Code Playgroud)

这个合适吗?

是否有我应该使用的内置方法?

请注意,使用层次结构时,单次调用ActiveControl是不够的.想像:

Form
    TableLayoutPanel
        FlowLayoutPanel
            TextBox (focused)
Run Code Online (Sandbox Code Playgroud)

(formInstance).ActiveControl将返回对TableLayoutPanel的引用,而不是TextBox(因为ActiveControl似乎只是在控制树中返回直接活动的子节点,而我正在寻找叶子控件).

.net winforms

65
推荐指数
4
解决办法
5万
查看次数

IntPtr,SafeHandle和HandleRef - 解释

在没有指向MSDN的情况下,有人可以简明扼要地解释每个问题的目的以及何时使用它们.(IntPtr,SafeHandle和HandleRef)

.net winapi interop

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

为什么数组项目分配会降低C#程序的性能?

摘要

在处理大型文本文件时,我遇到了以下(意外)性能下降,我无法解释.我对这个问题的目标是:

  • 了解导致下面描述的减速的原因
  • 了解如何快速初始化大型非原始数组

问题

  • 数组包含非基本引用项
    • 不是int[],但MyComplexType[]
    • MyComplexType 是一个类,而不是结构
    • MyComplexType包含一些string属性
  • 数组已预先分配
  • 数组很大
  • 如果在未分配给阵列的情况下创建和使用项目,则程序很快
  • 如果创建了一个项目然后将其分配给数组项,则程序会显着减慢
    • 我希望数组项目赋值是一个简单的引用赋值,但是根据我在下面的测试程序的结果,这似乎不是这种情况

测试程序

考虑以下C#程序:

namespace Test
{
    public static class Program
    {
        // Simple data structure
        private sealed class Item
        {
            public Item(int i)
            {
                this.Name = "Hello " + i;
                //this.Name = "Hello";
                //this.Name = null;
            }
            public readonly string Name;
        }

        // Test program
        public static void Main()
        {
            const int length …
Run Code Online (Sandbox Code Playgroud)

.net c# arrays performance

19
推荐指数
1
解决办法
1434
查看次数

扩展方法命名空间和赞助者类的命名约定

您对名称空间和赞助商类使用了哪些命名约定?(即包含扩展方法定义的类)

是否有标准/推荐的.NET Framework命名约定?("框架设计指南,第2版"一书仅提供了关于不使用的命名空间的指导).

extension-methods naming-conventions .net-3.5

15
推荐指数
2
解决办法
3627
查看次数

您如何解决"StyleCop C#风格"与"框架设计指南C#风格"之间的差异?

在阅读了伟大的书籍"框架设计指南"(2008年11月第2版)的附录A"C#编码风格约定"之后,我对微软使用内部/推荐的编码风格感到困惑.

博客文章C#Style的简史声称:

事实上,"StyleCop风格"和"框架设计指南风格"之间的差异相对较小

在我看来,差异是非常明显的.StyleCop说开放式支架应该在一个单独的线上,框架设计指南说它应该在开幕式之后.StyleCop表示所有关键字后面都有一个空格,框架设计指南说"摆脱所有空间"(甚至围绕二元运算符).

我从框架设计指南书中发现这条规则特别具有讽刺意义(第366页,第6条规则):

不要在流控制语句之前使用空格

Right: while(x==y)
Wrong: while (x == y)
Run Code Online (Sandbox Code Playgroud)

这明确说明StyleCop样式是错误的(while关键字后面的空格,相等二元运算符之前和之后的空格).

最后,使用StyleCop样式格式化的代码与使用Framework Design Guidelines样式格式化的代码具有完全不同的"感觉".通过遵循框架设计指南样式,人们将不得不禁用一堆规则(并且没有规则检查是否遵守框架设计指南样式......).

有人(MSFT内部人士可能?)对这种分歧有所了解吗?

你的团队如何应对这个问题?关注StyleCop?框架设计指南?完全忽略风格?烘焙自己的风格?

c# coding-style stylecop conventions

14
推荐指数
2
解决办法
1720
查看次数

如何在不生成msbuild.exe进程的情况下从Powershell运行MSBuild?

我正在考虑通过直接点击MSBuild程序集从Powershell脚本运行MSBuild(而不是查找MSBuild安装路径并启动msbuild.exe作为子进程).

有没有人这样做过?运行构建的最简单,最直接的方法是什么?你想指出哪种技术都有利弊吗?(我对在与脚本的其余部分在同一进程/ appdomain中运行msbuild可能引起的任何问题特别感兴趣).

目前我的想法是这样的:

[void][System.Reflection.Assembly]::Load('Microsoft.Build.Engine, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
[void][Microsoft.Build.BuildEngine.Engine]::GlobalEngine.BuildProjectFile("path/main.proj")
Run Code Online (Sandbox Code Playgroud)

.net msbuild powershell

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

如何使用NSubstitute替换Object.ToString?

当我尝试使用NSubstitute 1.7.1.0定义的行为Object.ToString(这是一个虚拟方法),NSubstitute被抛出异常.

重现:

[Test]
public static void ToString_CanBeSubstituted()
{
    var o = Substitute.For<object>();
    o.ToString().Returns("Hello world");

    Assert.AreEqual("Hello world", o.ToString());
}
Run Code Online (Sandbox Code Playgroud)

失败:

NSubstitute.Exceptions.CouldNotSetReturnDueToNoLastCallException : Could not find a call to return from.

Make sure you called Returns() after calling your substitute (for example: mySub.SomeMethod().Returns(value)),
and that you are not configuring other substitutes within Returns() (for example, avoid this: mySub.SomeMethod().Returns(ConfigOtherSub())).

If you substituted for a class rather than an interface, check that the call to your substitute was on a virtual/abstract …
Run Code Online (Sandbox Code Playgroud)

c# nsubstitute

9
推荐指数
2
解决办法
2923
查看次数

<table>的所有现代浏览器中出现意外的盒子模型行为

以下是一个参考HTML文档,说明了我的问题:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Box model test</title>
        <style type="text/css">
            html,body { margin:0; padding:0; background-color:#808080;}
            #box { position:absolute; top:20px; left:20px; background-color:Green; }
            #tbl { position:absolute; top:20px; left:40px; background-color:Red; }
            .common { width:20px; height:30px; border-bottom:solid 1px black; }
        </style>
    </head>
    <body>
        <div id="box" class="common"></div>
        <table id="tbl" class="common"></table>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

HTML5 doctype和X-UA-Compatible元标记的组合应该将任何现代浏览器切换到它支持的最符合标准的模式.该文档包含两个绝对定位的元素a <div> 和a <table>.它们并排排列,具有完全相同的宽度,高度和边框CSS.出乎意料的是,我测试的所有浏览器都渲染了这样的文档:

alt text http://img204.imageshack.us/img204/853/screen1tu.png

<div>(绿色)如下盒模型.内容区域高30像素(绿色像素),下面有1个像素的边框(总高度为31像素,CSS高度指令被解释为'不包括边框').

<table>然而,渲染的内容区域高29像素(红色像素),下方有1个像素的边框(整体高度为30像素,因此在这种情况下,CSS高度被解释为'包括边框').

我的问题是,为什么盒子模型有例外(元素的高度不应该包括边界,但它显然有用<table>)?这是否记录在W3C规范中?我可以将这种行为放在未来吗?

PS:我用IE 7,IE 8,Opera 10.10,Safari …

html css

7
推荐指数
1
解决办法
1139
查看次数