小编Kli*_*ker的帖子

只要有一个带焦点的只读文本框,就无法在keydown事件上检测到Ctrl + Key快捷方式

我以为我自己解决了这个问题,但它回来困扰我的应用程序,所以这里它:

我有一个注册表单中的以下keydown事件处理程序,其中包含几个禁用和只读文本框,它们只是按钮的简单快捷方式:

private void AccountViewForm_KeyDown(object sender, KeyEventArgs e)
{
    //e.SuppressKeyPress = true;
    //e.Handled = true;
    if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.E && !isInEditMode)
        btnEditMode_Click(sender, e);
    if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.S && isInEditMode) btnEditMode_Click(sender, e);
    if (e.KeyCode == Keys.Escape) btnCancel_Click(sender, e);
    if (Control.ModifierKeys == Keys.Control && e.KeyCode == Keys.W) Close();
}
Run Code Online (Sandbox Code Playgroud)

表单将KeyPreview设置为true,但只要readonly文本框具有焦点并按Ctrl + E,我就无法获得"Control.ModifierKeys == Keys.Control"和"e.KeyCode == Keys.E"两者都为true同时.真正奇怪的是Ctrl + W有效.任何人都知道到底是怎么回事?:(

.net c# winforms

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

使用 VS Code(mssql 扩展)连接到 Windows 上 Docker 中运行的 SQL Server

我在 Windows 上使用 Docker,并且有一个正在运行 SQL Server 的 Docker 容器。为了启动我的容器,我使用了此处显示的信息:

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-CU8-ubuntu
Run Code Online (Sandbox Code Playgroud)

(请注意,当我在 Windows 上运行时,我使用双引号 ( ") 而不是单引号 ( )。)'

我的容器正在运行,我可以连接到它并使用以下命令进行查询sqlcmd

docker exec -it <container_id|container_name> /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P <your_password>
Run Code Online (Sandbox Code Playgroud)

(请注意,我指定使用 找到的容器 ID docker container ls,以及运行容器时使用的密码yourStrong(!)Password。)

1> USE master
2> GO
Changed database context to 'master'.
1> SELECT name, database_id, create_date FROM sys.databases;
2> GO
name                                                                                                                             database_id create_date
----------------------------------------
master         1 2003-04-08 …
Run Code Online (Sandbox Code Playgroud)

sql-server docker visual-studio-code

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

防止屏幕通过C#休眠

我创建了一个小型C#控制台应用程序,以在屏幕上移动指针,希望这可以防止屏幕在几分钟后进入休眠/锁定状态。不幸的是,屏幕在几分钟后仍然进入睡眠状态。

有谁知道实际上是否可以用C#编写类似于用户输入(鼠标或键盘)的行为,并防止屏幕自动休眠/锁定?

这是我所拥有的,我认为可以解决这个问题。

class Program
{
    [DllImport("user32.dll")]
    static extern bool SetCursorPos(int X, int Y);

    static Random rnd = new Random();

    static void Main(string[] args)
    {

        Rectangle screenRes = Screen.PrimaryScreen.Bounds;
        int widtMax = screenRes.Width;
        int heighMax = screenRes.Height;

        int w;
        int h;

        do
        {
            while (!Console.KeyAvailable)
            {
                w = rnd.Next(1, widtMax);
                h = rnd.Next(1, heighMax);

                SetCursorPos(w, h);
                System.Threading.Thread.Sleep(1000);
            }
        } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# windows user-input

5
推荐指数
1
解决办法
3001
查看次数

使用 [FromQuery] 解析枚举值

我正在使用该[FromQuery]属性将Get请求参数解析为复杂对象。例如:

[HttpGet("some-get-request")]
public IActionResult DoSomething([FromQuery] SomeArguments someArgs)
{

}
Run Code Online (Sandbox Code Playgroud)

SomeArguments对象的属性之一是enum.

public enum SomeEnum { EnumValue01, EnumValue02 }

public class SomeArguments 
{
    [FromQuery(Name = "enum_arg")]
    public SomeEnum EnumArgument { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我用类似的东西调用端点:

http://localhost:1234/api/some-controller/some-get-request?enum_arg=EnumValue01

这一切都很好。但是,我希望能够在 URL 中使用与 C# 枚举值不同的枚举值。例如,我想使用 URL 调用,例如

http://localhost:1234/api/some-controller/some-get-request?enum_arg= eval01

我怎样才能做到这一点?

我以为我可以使用 [FromQuery] 属性,就像我可以使用属性一样,但这似乎是不可能的:

“FromQuery”对此声明类型无效。它仅对“属性、索引器、参数”有效

enums html-parsing .net-core asp.net-core

5
推荐指数
1
解决办法
3847
查看次数

CloudFormation YAML - 带有条件语句的 IAM 策略

我有一个在 AWS 控制台中创建另一个资源时自动创建的 IAM 策略。我正在尝试将其添加到现有的 CloudFormation 堆栈中。

该策略具有以下语句,其中包含“Condition”属性:

{
    "Sid": "DecryptSecretValue",
    "Action": [
        "kms:Decrypt"
    ],
    "Effect": "Allow",
    "Resource": [
        "arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602"
    ],
    "Condition": {
        "StringEquals": {
            "kms:ViaService": "secretsmanager.eu-west-1.amazonaws.com"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在 CloudFormation YAML 模板中应如何构建它?到目前为止我有:

Statement:
  - Effect: Allow
    Action: kms:DecryptSecretValue
    Resource: arn:aws:kms:MyRegion:MyAccountId:key/4f402c6e-9624-40a4-8d4d-c0f2efe88602
Run Code Online (Sandbox Code Playgroud)

但我不知道如何包含“条件”属性。有任何想法吗?

yaml amazon-web-services aws-cloudformation amazon-iam

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

无法分配268435456字节的托管内存缓冲区.可用内存量可能很低

我试图通过WCF服务调用将一些大数据保存到数据库.我无法调用该服务.它抛出一个错误:

无法分配268435456字节的托管内存缓冲区.可用内存量可能很低

public async Task<int> UploadExportPackage(DTO.Upload.UploadPackage package)
{
    int result = await serviceProxy.UploadResultsAsync(package);
    return result;
}
Run Code Online (Sandbox Code Playgroud)

服务器端配置:

    <!-- 
      Place limits on the amount of data that can be received in one go.
      This helps to protect the server from attack and abuse.
    -->
    <binding name="primaryBinding"
             maxReceivedMessageSize="6000000"
             maxBufferSize="6000000"
             maxBufferPoolSize="12000000">

      <readerQuotas maxArrayLength="6000000"
                    maxStringContentLength="6000000" />

      <!--
          Set the security mode. Apply at:
            - Transport layer
            - Message layer
      -->
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="UserName" />
      </security>
    </binding>
  </basicHttpsBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

Exception no: 0 
Run Code Online (Sandbox Code Playgroud)

下一个例外:消息: …

.net c# wcf

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

将空字符串与空值进行比较 - SQL Server

我需要比较两列,并在NULL与空字符串进行比较时遇到问题.简而言之,这就是我所看到的.

DECLARE @EmptyString VARCHAR(20) = '', -- Could have valid VARCHAR data, empty string, or NULL
        @Null VARCHAR(20) = Null; -- Could have valid VARCHAR data, empty string, or NULL

SELECT 
    CASE WHEN @EmptyString != @Null THEN 'Pass' ELSE 'Fail' END AS EmptyStringVsNull
Run Code Online (Sandbox Code Playgroud)

在这种情况下,因为我们都知道空字符串和空列值不同,我希望看到结果返回"通过",但事实并非如此.

从Martin's asnwer 这里,他解释说,这样的比较结果UNKNOWN,而不是TRUE或者FALSE,这澄清了我看到这些结果的原因,但我需要找到解决方案.我知道必须有一个简单的方法来解决这个问题...

我知道有一些内置功能,例如ISNULL()NULLIF(),但我不知道这些是否可以帮助这种情况......

一片空白()

如果我们使用ISNULL()函数将空值设置为空字符串,则比较将不起作用,因为空字符串等于空字符串,例如

DECLARE @EmptyString VARCHAR(20) = '',
        @Null VARCHAR(20) = Null;

SELECT 
    CASE WHEN ISNULL(@EmptyString, …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

c# 循环直到 Console.ReadLine = 'y' 或 'n'

我对 c# 还很陌生,正在编写一个简单的控制台应用程序作为练习。我希望应用程序提出一个问题,并且只有在用户输入等于“y”或“n”时才进入下一段代码。这是我到目前为止所拥有的。

static void Main(string[] args)
{

    string userInput;
    do
    {
        Console.WriteLine("Type something: ");
        userInput = Console.ReadLine();
    }   while (string.IsNullOrEmpty(userInput));

    Console.WriteLine("You typed " + userInput);
    Console.ReadLine();

    string wantCount;
    do
    {
        Console.WriteLine("Do you want me to count the characters present? Yes (y) or No (n): ");
        wantCount = Console.ReadLine();
        string wantCountLower = wantCount.ToLower();
    }   while ((wantCountLower != 'y') || (wantCountLower != 'n'));
}
Run Code Online (Sandbox Code Playgroud)

从那string wantCount;以后我就遇到麻烦了。我想要做的是询问用户是否要计算字符串中的字符数,然后循环该问题,直到输入 'y' 或 'n'(不带引号)。

请注意,我还想满足输入的大写/小写的需求,所以我想将 wantCount 字符串转换为小写 - 我知道我目前的方式string wantCountLower在循环内设置时不起作用,所以我然后不能在while 子句中的循环外引用。 …

c# loops console-application string-comparison while-loop

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

C# - 仅使用选项的字符串名称设置 CRM OptionSetValue

是否可以仅使用选项的名称/标签为 Dynamics CRM 设置新的 OptionSetValue?

例如,我有以下选项集:

1 : Male
2 : Female
Run Code Online (Sandbox Code Playgroud)

如果我没有int价值,是否可以使用string标签代替?如...

my_optionSet = new OptionSetValue(Male)
Run Code Online (Sandbox Code Playgroud)

c# crm dynamics-crm

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

C#Linq-按ASC顺序从VALUE开始

我有一个int数组,我想从某个值开始按升序对这些值进行排序,我们将其称为startValue。但是,我想保留所有值,并且大于该值的值startValue将出现列表中的最大值之后

用一个例子可能更容易解释...

int[] values = new int[] { 1, 2, 4, 6, 9 };
int startValue = 4;
int[] orderedValues = { 4, 6, 9, 1, 2 }; // desired result
Run Code Online (Sandbox Code Playgroud)

我该如何实现?我认为这样可以解决问题,但是新orderedValues的顺序与原始值相同。

int[] orderedValues = values.OrderBy( v => v >= startValue ).ToArray();
Run Code Online (Sandbox Code Playgroud)

c# linq

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