小编Pat*_*lug的帖子

Process.StartInfo.Arguments是否支持UTF-8字符串?

你可以使用UTF-8字符串作为StartInfo的参数吗?

我试图将UTF-8(在本例中为日语字符串)作为控制台参数传递给应用程序.

这样的事情(这只是一个例子!(cmd.exe将是一个自定义应用程序))

var process = new System.Diagnostics.Process();
process.StartInfo.Arguments = "/K \"echo ????????\"";
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = true;

process.Start();
process.WaitForExit();
Run Code Online (Sandbox Code Playgroud)

执行此操作似乎松开了UTF-8字符串,所有目标应用程序看到的都是"echo ?????????"

直接在命令行上执行此命令(通过粘贴参数),目标应用程序正确接收字符串,即使命令行本身似乎没有正确显示它.

我是否需要做一些特殊的事情才能在参数中启用UTF-8支持,或者这是不支持的?

c# utf-8

12
推荐指数
2
解决办法
7221
查看次数

如何以原始格式保存图像?

如何使用原始编码保存图像?

似乎保存图像的唯一方法是使用BitmapEncoder,但我不知道如何从图像中获取正确的格式.

例:

Clipboard.GetImage()返回一个InteropBitmap,它似乎不包含任何有关原始格式的信息.

我也尝试使用Extension方法:

public static void Save(this BitmapImage image, System.IO.Stream stream)
{
    var decoder = BitmapDecoder.Create(image.StreamSource, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
    var encoder = BitmapEncoder.Create(decoder.CodecInfo.ContainerFormat);
    foreach (var frame in decoder.Frames)
    {
        encoder.Frames.Add(BitmapFrame.Create(frame));
    }
    encoder.Save(stream);
}
Run Code Online (Sandbox Code Playgroud)

但问题是

  1. 例如,ImageSource并不总是BitmapImage(Clipboard.GetImage())
  2. 在某些情况下,image.StreamSource可以为null(似乎是通过相对Uri加载图像时)

有什么建议?

c# wpf imaging

12
推荐指数
1
解决办法
2912
查看次数

这是ExtensionMethod的好用吗?

我只是写了一句if语句

if (value == value1 || value == value2 || value == value3 || value == value4)
    //do something
Run Code Online (Sandbox Code Playgroud)

令我很生气的是,我总是要重复'value =='部分.在我看来,除了难以阅读之外,这没有其他目的.

我编写了以下ExtensionMethod,它应该使上面的场景更具可读性:

public static bool IsEqualToAny<T>(this T value, params T[] objects)
{
    return objects.Contains(value);
}
Run Code Online (Sandbox Code Playgroud)

现在我可以简单地写

if (value.IsEqualToAny(value1, value2, value3, value4))
    //do something
Run Code Online (Sandbox Code Playgroud)

这是ExtensionMethod的一个很好的用法吗?

编辑:

感谢所有的好答案.记录:我保留了方法.虽然您可以简单地使用的建议new []{value1,value2,value3,value4}.Contains(value)是正确的,但我只是更喜欢从左到右读取这种if语句(如果此值等于其中任何一个而不是这些值包含此值).在每个对象的intellisense中显示另一个方法对我来说不是问题.

c# extension-methods

10
推荐指数
2
解决办法
344
查看次数

如何将ScrollViewer放在它应该滚动的内容之上

我想把ScrollViewer放在它滚动的内容重叠/位于其上面的方式.我会设置ScrollViewer的不透明度,以便内容在下面可见.

据我所知,默认的ScrollViewer,这似乎不可能开箱即用,因为内容嵌套在ScrollViewer中.

关于如何使这项工作的任何想法?

编辑:我知道ScrollViewer是一个装饰器,内容不知道ScrollViewer.这种分离很好,我不希望内容知道ScrollViewer.我尝试做的是纯粹的视觉(布局)事物.只需在内容之上显示ScrollViewer.ScrollViewer的行为应保持不变.

wpf scrollbar styling scrollviewer controltemplate

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

怎么知道动画为什么口吃?

我有一些相当简单的动画(移动文本,移动椭圆等)并在全屏幕(1920x1080减去任务栏)中运行WPF Performance Suite在整个动画中报告大约50 FPS的良好帧率.Dirty Rect Addition大约300 rect/s,SW帧在0到4之间,HW帧在3到5之间.视频内存使用大约是80 MB.

WPF Performance屏幕截图

问题是动画每隔一秒就会断断续续.绝对不流畅:-(

我的机器是全新戴尔笔记本电脑XPS 15,配备GeForce GT 435和2GB内存. - 司机是最新的.(同样的行为也出现在我的上网本(全屏)中,所以我不认为它与硬件有关.)

如果我让窗户变小,口吃就会消失.

口吃最简单的动画 - 即使只有几个元素,但添加更多元素肯定会使它更明显.

我怎样才能找出导致这种口吃的原因?

当我想到它时,我实际上还没有看到任何WPF动画在全屏幕上流畅运行.这甚至可能吗?

wpf performance animation

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

如何显示打印机属性/首选项对话框并保存更改?

编辑:我的错!我希望在实际上只更改PrinterSettings的本地实例时,将更改写回默认的打印机设置. - 以下代码似乎按预期工作

我试图显示给定打印机的自定义打印机属性.我需要这个作为我想写的自定义PrintDialog的一部分.

我在网上找到的大多数示例都设法显示对话框,但用户可能做出的任何更改都会丢失,这使得它无用.

示例:http: //www.codeproject.com/KB/system/PrinterPropertiesWindow.aspx

(关于上面的页面:我试图改变BartJoy建议的代码(在页面上)但是没有修复它)

我也尝试过pinvoke.net页面上的示例和建议,但它仍然不起作用:

http://www.pinvoke.net/default.aspx/winspool.documentproperties

从上面的网站我假设问题可能只在64位Windows上和/或如果打印机名称超过32个字符.

我不知道接下来应该尝试什么...我感谢任何建议和意见!

编辑:这是我尝试过的:

[DllImport("winspool.Drv", EntryPoint = "DocumentPropertiesW", SetLastError = true,
 ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
static extern int DocumentProperties(IntPtr hwnd, IntPtr hPrinter,
        [MarshalAs(UnmanagedType.LPWStr)] string pDeviceName,
        IntPtr pDevModeOutput, IntPtr pDevModeInput, int fMode);

[DllImport("winspool.drv")]
private static extern int OpenPrinter(string pPrinterName, out IntPtr hPrinter, IntPtr pDefault);
[DllImport("winspool.drv")]
private static extern int ClosePrinter(IntPtr phPrinter);

[DllImport("kernel32.dll")]
static extern IntPtr GlobalLock(IntPtr hMem);
[DllImport("kernel32.dll")]
static extern bool GlobalUnlock(IntPtr hMem);
[DllImport("kernel32.dll")]
static extern bool GlobalFree(IntPtr …
Run Code Online (Sandbox Code Playgroud)

c# printing pinvoke winapi

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

配置VS 2010,使其不添加新的EventHandler(...); 通过+ =添加EventHandler时

可能重复:
我可以在Visual Studio中自定义自动事件处理程序生成吗?

我可以配置VS2010 Intellisense以便它执行此操作:

SomeEvent += Some_Method;
Run Code Online (Sandbox Code Playgroud)

而不是这个:

SomeEvent += new EventHandler(Some_Method);
Run Code Online (Sandbox Code Playgroud)

通过+ =添加EventHandler并按Shift键?

据我所知,就生成的IL而言,这没有任何区别,但我个人更喜欢第一个版本.它更容易阅读,当我去更改EventHandler类型为不同的东西时,我不必去修复+ =/ - =调用.

c# intellisense visual-studio-2010

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

将img.src设置为动态svg元素

我知道我可以将svg文件设置为srcHTML img元素,如下所示:

<img src="mySVG.svg"/>
Run Code Online (Sandbox Code Playgroud)

但我不知怎么设置动态SVG元素作为srcimg

<svg id="mySVGElement">
    ...
</svg>

<img src="?"/>
Run Code Online (Sandbox Code Playgroud)

html svg

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

更新应用程序后,在Windows 7上单击固定项目时"参数不正确"

我有以下情况:

  1. 使用普通的.msi安装我的应用程序
  2. 从开始菜单运行该应用程序
  3. 右键单击任务栏中的图标并将其固定.

现在,我可以使用固定项目/快捷方式来启动我的应用程序,但在我使用另一个.msi文件更新我的应用程序后,单击固定项目会显示以下错误:

'快捷方式问题' - 参数不正确.

我检查了捷径,据我所知,它指向与之前版本相同的目录/文件.(新版本具有相同的文件/位置).我假设有一些版本控制/程序文件魔术发生导致此问题,但没有在网上找到任何好的信息.

更多信息:

  1. 该应用程序是用C#.NET 3.5 SP1编写的
  2. msi是使用Visual Studio 2008 SP1中的安装项目创建的
  3. 我使用自定义构建工具来集成msi构建,并将ProductCode和PackageCode设置为每个版本的新GUID.
  4. 否则,更新似乎工作正常.旧版本已卸载,新版本已正确安装.

有人知道吗?

shortcuts windows-installer taskbar windows-7

6
推荐指数
1
解决办法
3821
查看次数

通过 WooCommerce 注册时将完整的电子邮件地址设置为用户名

设置/帐户下的 WooCommerce 有一个名为的选项

从客户电子邮件自动生成用户名

但它生成的用户名不是完整的电子邮件地址。

my.email@example.com

成为myemail用户名。

我需要使用什么方法来覆盖用户生成,以便将 完整的电子邮件设置为用户名?

php wordpress woocommerce

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