我以为我自己解决了这个问题,但它回来困扰我的应用程序,所以这里它:
我有一个注册表单中的以下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有效.任何人都知道到底是怎么回事?:(
我在 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) 我创建了一个小型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) 我正在使用该[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”对此声明类型无效。它仅对“属性、索引器、参数”有效
我有一个在 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)
但我不知道如何包含“条件”属性。有任何想法吗?
我试图通过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)
下一个例外:消息: …
我需要比较两列,并在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) 我对 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 子句中的循环外引用。 …
是否可以仅使用选项的名称/标签为 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) 我有一个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# ×6
.net ×3
sql-server ×2
.net-core ×1
amazon-iam ×1
asp.net-core ×1
crm ×1
docker ×1
dynamics-crm ×1
enums ×1
html-parsing ×1
linq ×1
loops ×1
sql ×1
user-input ×1
wcf ×1
while-loop ×1
windows ×1
winforms ×1
yaml ×1