小编Ada*_*dam的帖子

WPF中的全局热键在每个窗口中工作

我必须使用热键,它将在每个窗口和讲坛上工作.在winforms我用过:

RegisterHotKey(this.Handle, 9000, 0x0002, (int)Keys.F10);
Run Code Online (Sandbox Code Playgroud)

UnregisterHotKey(this.Handle, 9000);
Run Code Online (Sandbox Code Playgroud)

protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);
    switch (m.Msg)
    {
        case 0x312:
        switch (m.WParam.ToInt32())
        {
            case 9000:
            //function to do
            break;
        }
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的WPF应用程序中,我试过:

AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)HandleKeyDownEvent);
Run Code Online (Sandbox Code Playgroud)

private void HandleKeyDownEvent(object sender, KeyEventArgs e)
{
    if (e.Key == Key.F11 && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        //function to do
    }
}    
Run Code Online (Sandbox Code Playgroud)

但它仅在我的应用程序处于活动状态且位于顶部时才起作用,但在应用程序最小化时(例如)它不起作用.有什么方法可以做到吗?

c# wpf hotkeys

13
推荐指数
1
解决办法
9918
查看次数

如何使用XNA调整窗口大小

我知道这个问题之前已被问过很多次了.但是,经过一个多小时的谷歌搜索,我发现的所有解决方案基本上都是一样的.每个人都说,为了在XNA中调整窗口大小,您只需在Game1类的Initiate()方法中添加以下代码行(或这些代码行的一些细微变化):

    //A lot of people say that the ApplyChanges() call is not necessary,
    //and equally as many say that it is.
    graphics.IsFullScreen = false;
    graphics.PreferredBackBufferWidth = 800;
    graphics.PreferredBackBufferHeight = 600;
    graphics.ApplyChanges();
Run Code Online (Sandbox Code Playgroud)

这对我不起作用.代码编译并运行,但绝对没有任何变化.我一直在搜索GraphicsDevice和GraphicsDeviceManager类的文档,但我一直无法找到任何信息表明我需要做除上述之外的任何事情.

我也很确定我的显卡是足够的(ATI HD 5870),虽然看起来XNA显卡兼容性上的wiki条目还没有更新一段时间.

我在Windows 7上运行,使用上面的显卡,Visual C#2010 Express和最新版本的XNA.

所以我只是希望有人可以帮我找到搞砸的地方.我将在下面发布我的整个Game1类(我将其重命名为MainApp).如果有人想看到任何其他被调用的类,请问我会发布它们.

public class MainApp : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;

    Player player;

    public MainApp()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
    }

    protected override void Initialize()
    {
        player = new Player();

        //This does not do ANYTHING
        graphics.IsFullScreen = false; …
Run Code Online (Sandbox Code Playgroud)

c# xna resize resolution window

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

为什么我的.NET启动时间会因预先生成的序列化程序集而增加?

我有一个非常大而复杂的winforms应用程序.为了减少启动时间,我使用以下批处理文件预生成了序列化程序集.

; delete any existing serialization assemblies
del *XmlSerializers.dll

; gen new serialization assemblies
for %%a in (*.dll) do sgen /assembly:%%a

; delete .deleted files (generated for assemblies which do not allow serialization)
del *.dll.deleted*
Run Code Online (Sandbox Code Playgroud)

然而,令我惊讶的是,启动时间实际上从4.6秒上升到6.1秒 - 跳跃1.5秒.这无论是冷启动还是温暖都是如此.

所以,问题:

  1. 为什么我的应用程序在序列化程序集到位时开始变慢?
  2. 当应用程序生成序列化程序集时,有没有办法通过Perfmon或其他工具查看?
  3. 我正确生成序列化程序集吗?

c# performance serialization .net-4.0 winforms

10
推荐指数
1
解决办法
350
查看次数

迭代Python中的unicode字符串

我遇到了使用python逐字符串地迭代unicode字符串的问题.

print "w: ",word
for c in word:
    print "word: ",c
Run Code Online (Sandbox Code Playgroud)

这是我的输出

w:  ??
word:  ? 
word:  ?
word:  ?
word:  ?
word:  ?
word:  ?
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

?
?
Run Code Online (Sandbox Code Playgroud)

当我使用len(word)时我得到6.显然每个角色都是3个unicode块.

所以,我的unicode字符串成功存储在变量中,但我无法将字符输出.我尝试过使用encode('utf-8'),decode('utf-8)和编解码器,但仍然无法获得任何好的结果.这似乎是一个简单的问题,但对我来说却是令人沮丧的.

希望有人能指出我正确的方向.

谢谢!

python unicode python-2.x

8
推荐指数
1
解决办法
4804
查看次数

如何使用XElement.ToString()包含声明

我正在尝试为我的Web服务编写XML响应,但是我无法弄清楚如何使声明出现在响应中.

我的代码是这样的:

StringBuilder sBuilder = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sBuilder))
{
    writer.WriteStartDocument();
    writer.WriteStartElement("ReportResponse");
    Response.WriteXml(writer);
    writer.WriteEndElement();
    writer.WriteEndDocument();
}

var response = XElement.Parse(sBuilder.ToString());
return response;
Run Code Online (Sandbox Code Playgroud)

响应只是存储响应数据的POCO.

我知道该Save方法包括声明而ToString()方法没有.我需要写回我的声明ToString().

我真的只想从我的REST服务返回自定义XML而不将我的字符串强制转换100次以返回有效的XML.这甚至可能还是只是旋转我的车轮?

c# xml serialization wcf-rest

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

外部辉光效果和旋转在WPF中的标签上

我需要在标签上创建外部发光效果并使其旋转一点(约20度).我正在使用以下代码,但它不能按照我希望的方式工作:

<Label Height="106" Margin="80,57,36,0" Name="lblHeading" FontSize="35">
    Brian's 15th Birthday Party
    <Label.Effect>
        <DropShadowEffect BlurRadius="100" ShadowDepth="0" Opacity="1" 
                          Color="White"/>
    </Label.Effect>
</Label>
Run Code Online (Sandbox Code Playgroud)

是否可以在窗口中的某处添加一些文本并为其添加外部发光效果和旋转?如果有人可以在不使用标签控件的情况下帮助我在标签上添加相同的效果或任何其他方式,那将是很棒的.

我也试过以下,但它没有帮助.也许我不知道如何使用它,因为它只是导致错误:

<OuterGlowBitmapEffect GlowColor="Blue" GlowSize="30" Noise="1" Opacity="0.4" />
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml

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

比较两个大型通用列表

我找不到这个具体的例子,所以我发布了这个问题.任何帮助赞赏.

我有两个大的通用列表,都有超过300K的项目.

我循环遍历第一个列表以回读信息并为动态生成新列表的新项目,但是我需要在第二个列表中搜索并根据三个匹配条件返回一个值,如果发现要添加到列表,但是你可以想象,这样做300k*300k次需要时间.

有什么方法可以更有效地做到这一点吗?

我的代码:

var reportList = new List<StocksHeldInCustody>();
foreach (var correctDepotHolding in correctDepotHoldings)
  {
    var reportLine = new StocksHeldInCustody();
    reportLine.ClientNo = correctDepotHolding.ClientNo;
    reportLine.Value = correctDepotHolding.ValueOfStock;
    reportLine.Depot = correctDepotHolding.Depot;
    reportLine.SEDOL = correctDepotHolding.StockCode;
    reportLine.Units = correctDepotHolding.QuantityHeld;
    reportLine.Custodian = "Unknown";
    reportLine.StockName = correctDepotHolding.StockR1.Trim() + " " + correctDepotHolding.StockR2.Trim();

    //Get custodian info

    foreach (var ccHolding in ccHoldList)
    {
      if (correctDepotHolding.ClientNo != ccHolding.ClientNo) continue;
      if (correctDepotHolding.Depot != ccHolding.Depot) continue;
      if (correctDepotHolding.StockCode != ccHolding.StockCode) continue;
      if (correctDepotHolding.QuantityHeld != ccHolding.QuantityHeld) continue;
      reportLine.Custodian = ccHolding.Custodian;
      break; …
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0

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

使用errorprovider验证多个文本框

我有10个文本框,现在我想检查单击按钮时它们都不是空的.我的代码是:

 if (TextBox1.Text == "")
 {
    errorProvider1.SetError(TextBox1, "Please fill the required field");
 }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以一次检查所有文本框,而不是为每个人写作?

c# winforms

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

为什么string.letters在python和bpython之间有所不同?

我今天遇到了一个奇怪的问题.我正在使用Python标准库的string模块letters变量,并注意到bpython中的结果与vanilla python中的结果不同.

我正在使用Python 2.7.3和bpython 0.10.1以及virtualenv 1.8.4.这就是我所看到的.

$ bpython
>>> import string
>>> string.letters
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'


$ python
>>> import string
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Run Code Online (Sandbox Code Playgroud)

我不确定它是否重要,但我在xubuntu 12.10上运行它.

有人可以解释一下这里发生了什么吗?

python bpython

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

在所有表单上显示MessageBox,设置位置和/或颜色

我有两种形式,我将其中一种形式的TopMost属性设置为true.在某个地方,当程序运行时,我显示一个MessageBox,但由于TopMost设置为true,当MessageBox弹出时,它显示在最顶层的表单下,所以我看不到它.

  1. 有没有什么方法可以让我的一个表单总是在顶部,但是当一个MessageBox弹出时,让消息框显示在该特定表单的顶部?

  2. 是否可以为MessageBox提供一个位置,以便它不显示在中间但例如屏幕上的低位?

  3. 假设我有一个橙色的表单,我可以只为该特定应用程序设置一个粉红色的消息框.我的意思是我不是指播放Windows颜色属性.(我不希望所有消息框都是粉红色的.)

c# messagebox visual-studio-2010

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