如果不存在某个数字,如何将某个数字插入到列表中间?
在下面的示例中,我尝试插入数字 4
List<int> list1 = new List<int>(){ 0, 1, 2, 3, 5, 6 };
int must_enter = 4;
if (!list1.Contains(must_enter))
{
list1.Add(must_enter);
}
Run Code Online (Sandbox Code Playgroud)
由于结果编号将在列表末尾输入,但我希望它位于 3 之后(5 之前)。
请注意,由于项目的具体情况,我无法使用排序列表,但列表中的所有数字都保证按升序排列(0,2,6,9,10,...)
编辑:我知道有一个错误,这就是我所做的:
List<int> list0 = new List<int>() { 1, 2, 3, 5, 6 };
int must_enter = 7;
if (!list0.Contains(must_enter))
{
if (must_enter < list0.Max())
{
int result = list0.FindIndex(item => item > must_enter || must_enter > list0.Max());
list0.Insert(result, must_enter);
}
else
{
list0.Add(must_enter);
}
}
Run Code Online (Sandbox Code Playgroud)
edit2:无论如何,由于几个因素,我已经切换到 …
我正在用 C# 编写一个程序,它必须模拟键盘的按键命令。
问题是 - 我需要模拟“真实”的键盘按钮点击,而不是假的。例如,据我所知:
当用户按下键盘上的任何按钮时 - 信号通过 USB 发送,然后通过键盘的驱动程序进行。
当使用 API 时(SendInput、SendKeys、KeyBoardEvent 或其他) - 我们绕过 USB 和驱动程序,因此基本上可以通过全局钩子方法跟踪这些类型的按下。
你如何模拟真实的按键?
我没有 C++ 知识,所以编写自定义驱动程序不是一种选择。
我不介意使用微控制器或任何额外的硬件“解决方案”,只要它便宜..
也许可以通过 USB 电缆连接两台 PC,以便将真实的键盘按钮按下信号从 PC2 发送到 PC1?
那么方法是什么?
有没有什么好方法用C#生成随机偶数?我想出了这段代码:
Random RandString = new Random(0);
Run Code Online (Sandbox Code Playgroud)
码:
private void button6_Click(object sender, EventArgs e)
{
int min = 0;
int max = 50;
int rand = RandString.Next(min, max-1);
while (rand % 2 == 1) // odd
{
rand = RandString.Next(min, max-1);
}
textBox4.Text = "" + rand;
}
Run Code Online (Sandbox Code Playgroud)
这段代码有问题:
那么有什么方法可以解决我所描述的问题,还是有其他方法?
有没有办法在数组中移动项目?例如:
int[] myArray = {1,2,3,4};
Run Code Online (Sandbox Code Playgroud)
第二个元素成为最后一个:
int[] myArray = {1,3,4,2};
Run Code Online (Sandbox Code Playgroud)
PS:不,那不是作业.我可以想到至少一个解决方案,但它需要相当困难的实现:
还有其他(阅读 - 更简单)的方法吗?
可能重复:
按名称在C#winforms中查找控件
想象一下,我们有4个textBoxes(和一个按钮):
textBox1 :(这里我们必须输入我们要更改背景的textBox的名称)
TextBox2中:()
textBox3 :()
textBox4 :()
在我们的第一个文本框中,我们输入任何其他TextBox的名称,当我们单击一个按钮时 - backrground将相应地更改.
通常我会做这样的事情:
private void button1_Click(object sender, EventArgs e)
{
string variableName = textBox1.Text();
if (variableName == "textBox1")
{
textBox1.BackColor = Color.Black;
}
else if (variableName == "textBox2")
{
textBox2.BackColor = Color.Black;
}
else if (variableName == "textBox3")
{
textBox3.BackColor = Color.Black;
}
else if (variableName == "textBox4")
{
textBox4.BackColor = Color.Black;
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方式 - 更简单的方法是做同样的操作:
private void button1_Click(object sender, EventArgs e)
{
string variableName = textBox1.Text(); …Run Code Online (Sandbox Code Playgroud) 我有一系列数字:
int[] array = new int[]{ 18, 5, 10, 12, 15, 18 };
Run Code Online (Sandbox Code Playgroud)
如何计算超过一定水平的所有数字(不重复)?LINQ会有什么帮助吗?
例如 - 有10 个以上的数字(18和15,12).
只有1个数字超过15(18,18实际上是相同的数字).
编辑:(抱歉忘了这个)
是否有可能计算超过一定水平的重复?
即在我的"15"的例子中,将有2次重复
编辑2
我的"分组"方式
int count1 = array.Where(x => x > 15).Distinct().Count();
int count2 = array.Where( x => x > 15).Count();
int count3 = count2 - count1;
Run Code Online (Sandbox Code Playgroud) 你能在awesomium webcontrol中找到HTML元素来进行进一步的处理吗?
例如,我可以使用以下方法在Watin中找到必要的元素(甚至元素集合):
Link playButton = myie.ElementOfType<Link>(Find.ById("myid")); // find link (<a>)
Div test = myie.Div(Find.ById("audio")); // find div (<div>)
Run Code Online (Sandbox Code Playgroud)
找到后 - 您可以提取该元素的多个属性
string classname = playButton.ClassName; // alternatively -> inner text, link, id, class and all bucket of other properties
Run Code Online (Sandbox Code Playgroud)
我如何在awesomium中做到这一点?它是否具有内置的DOM解析器来操作网站控件?(div,链接,表等..)
到目前为止,我只能找到javascript执行命令,但这不是我正在寻找的 ..
另外,我想知道如何将网页的HTML保存为字符串(在awesomium中)?
string mysite = webControl1.SiteHTML.ToString(); // something like this
// instead of
string mysite = webControl1.ExecuteJavascriptWithResult("document.documentElement.outerHTML").ToString();
Run Code Online (Sandbox Code Playgroud)
编辑:解释
它看起来像awesomium本身不支持HTML元素解析,所以我的备份计划如下:
如果awesomium有DOM支持,那么所有这些都会更容易..但是......好吧..
我正在尝试使用in设置input字段的值devtools consoleGoogle Chrome
此任务的要点是元素的状态可能由状态控制React.js。在找到以下内容后,我得出了这个结论__reactProps:
我试图操作的元素位于TradingView。如果您打开任何资源之王并在页面底部找到日历按钮:
将打开一个模式窗口,其中包含以下内容:
我试图以编程方式将日期输入字段值设置为任何其他有效值,但问题是,提交表单后 -正在使用旧值!事实上,可以通过在表单提交之前将鼠标光标悬停在元素上来进一步确认这一点。执行此操作后 - 该值将恢复为旧值/初始值。
我已经进行了十几次尝试永久更改 的值devtools console,但无论如何它都会恢复到其初始值:
var myObj = document.querySelector("div[data-name='go-to-date-dialog'] input");
myObj.value = "2021-09-01";
myObj.setAttribute('value', "2021-09-01");
myObj.defaultValue = '2021-09-01';
myObj._wrapperState.initialValue = '2021-09-01';
var keys = Object.keys(myObj);
var propsKey = keys.find(key=>{ return key.startsWith("__reactProps$") });
myObj[propsKey].value = '2021-09-01';
myObj.dispatchEvent(new Event('blur'));
Run Code Online (Sandbox Code Playgroud)
是否React.js需要某种特殊处理?有没有办法invoke从控制台和普通js将新状态转换为日期组件?
我试图实现的任务仅用于教育目的,并不意味着“破解”或对任何特定软件或平台造成损害。我认为这个问题与任何网站上制作的任何组件相关React.js。
列表:
List<int> list1 = new List<int>(){ 0, 1, 2, 3, 4, 5, 6 };
Run Code Online (Sandbox Code Playgroud)
假设我们想要重新排序。开头应为数字“2”
// 2,3,4,5,6,0,1
Run Code Online (Sandbox Code Playgroud)
或 5 号
// 5,6,0,1,2,3,4
Run Code Online (Sandbox Code Playgroud)
你如何用 C# 做到这一点?
原因:假设您在 List 中有一个给定数字的索引(数字 3,索引 3)。您想要获得右侧第二个数字 - 它将是 5。
不幸的是,如果起始数字位于列表的末尾(数字 5 和 6),则会抛出超出范围异常,因为没有 7 和 8!
这个想法是重新排序列表!
或者也许还有其他(更好的)方法来解决这个问题?
关于如何从一个列表中排除另一个列表的项目,我有一个相当具体的问题.常见的方法,如Except()不会这样做,原因如下:
我不是在寻求解决方案,因为我自己创建了一个解决方案.然而,在多次执行此方法之后 - "ANTS性能分析器"显示该方法经过了整个执行时间的75%(40个中的30秒).问题是:是否有更快的方法来执行相同的操作?我试图优化我当前的代码,但它仍然缺乏性能.这里是:
private void removedoubles(List<int> exclude, List<int> listcopy)
{
for (int j = 0; j < exclude.Count(); j++)
{
for (int i = 0; i < listcopy.Count(); i++)
{
if (listcopy[i] == exclude[j])
{
if (i % 2 == 0) // even
{
//listcopy.RemoveRange(i, i + 1);
listcopy.RemoveAt(i);
listcopy.RemoveAt(i);
i = i - 1;
}
else //odd
{
//listcopy.RemoveRange(i - 1, i);
listcopy.RemoveAt(i - 1);
listcopy.RemoveAt(i - 1);
i …Run Code Online (Sandbox Code Playgroud) c# ×9
list ×3
winforms ×3
arrays ×2
numbers ×2
awesomium ×1
comparison ×1
controls ×1
element ×1
javascript ×1
keyboard ×1
keypress ×1
linq ×1
optimization ×1
random ×1
reactjs ×1
web-controls ×1