SendKeys.SendWait(“ {%}”)写入“ 5”,而不是“%”

问题描述 投票:0回答:3

我正在编写一个应用程序,只要有可用文本,该应用程序就会使用SendKeys在光标处发送文本。每次应用程序必须写百分号时,它都会改写数字5。我发送10{%},输出为105。我不知道如何简单地使%符号出现。

来自MSDN

加号(+),脱字号(^),百分号(%),代字号(〜)和括号()对SendKeys具有特殊含义。指定以下一项这些字符,将其括在大括号({})中。例如,指定加号,使用“ {+}”。要指定大括号字符,请使用“ {{}”和“ {}}”。

这里是重现此问题的非常简单的示例(带有System.Windows.Forms参考的ConsoleApp)

namespace ConsoleApp4
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Threading.Thread.Sleep(1000);

            string text = "10{%}";

            // Output SHOULD be "10%"
            // Output IS "105"
            System.Windows.Forms.SendKeys.SendWait(text);

            Console.ReadLine();
        }
    }
}

输出是105,而不是10%

我无法弄清楚,如何使用SendKeys编写%符号?

c# winforms sendkeys
3个回答
3
投票
string text = "10+ù";

您的文化是fr-fr,您正在使用AZERTY键盘。 %相对于ù位于换档位置,因此应该可以解决问题。


1
投票

在字符串值的字符串值之前使用@运算符。

例如string text = @"10{%}";

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/tokens/verbatim


0
投票

那是奇怪的拉斐尔。我将您的代码复制粘贴到示例C#项目中,并得到10%作为输出。您是否通过提供的链接使用任何上述支持的平台-

适用于

。NET Core

3.0

。NET Framework

4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5 4.0 3.5 3.0 2.0 1.1

© www.soinside.com 2019 - 2024. All rights reserved.