我正试图检测一下Tab按键TextBox.我知道,Tab键不会触发KeyDown,KeyUp或KeyPress事件.我发现:在互联网上检测BlackWasp的Windows窗体中的Tab键.他们建议覆盖我所做的ProcessCmdKey,但它也不会被触发.有没有可靠的方法来检测Tab键按键?
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool baseResult = base.ProcessCmdKey(ref msg, keyData);
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed.");
return true;
}
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed.");
return true;
}
return baseResult;
}
Run Code Online (Sandbox Code Playgroud)
根据Cody Gray的建议,我改变了代码如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed."); }
if …Run Code Online (Sandbox Code Playgroud) 我有一个带有ComboBox的表单。我找到了该帖子:http : //blog.michaelgillson.org/2010/05/18/left-right-center-where-do-you-align/帮助我将DropDown列表中的所有项目居中对齐。问题是所选项目(comboBox.Text属性中显示的项目)保持左对齐。
如何将所选项目居中对齐?
代码是:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ComboBoxTextProperty
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
List<string> source = new List<string>() { "15", "63", "238", "1284", "13561" };
comboBox1.DataSource = source;
comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
comboBox1.DropDownStyle = ComboBoxStyle.DropDown;
comboBox1.SelectedIndex = 0;
comboBox1.DrawItem += new DrawItemEventHandler(ComboBox_DrawItem);
}
/// <summary>
/// Allow the text in the ComboBox to be center aligned.
/// …Run Code Online (Sandbox Code Playgroud) 如果我定义一个整数数组:
int[] a = new int[13];
Run Code Online (Sandbox Code Playgroud)
并且我没有向其中插入任何项目,我如何知道数组 a 是否包含任何项目或完全为空?我是否必须迭代所有 a.Length 索引?在列表中
List<int> b = new List<int>();
Run Code Online (Sandbox Code Playgroud)
如果我检查:
if(b.Count == 0)
{
// The list does not contain any items.
}
Run Code Online (Sandbox Code Playgroud)
有没有等效的方法来检查数组?我在互联网上发现检查数组是否为空或空。就我而言,我确信该数组不为空。我只是想知道它是否包含任何项目。我不关心数组中的哪个位置,也不关心具体是哪个项目。预先非常感谢您。
我从两种不同格式的文件中读取日期时间字符串:
19/02/2019 08:24:592/17/2019 12:25:46 PM对于第一种格式,我写的自定义格式字符串是:
string firstDate = "19/02/2019 08:24:59";
string customFormatForFirstDateTimeString = "dd/mm/yyyy hh:mm:ss";
Run Code Online (Sandbox Code Playgroud)
我用它如下:
string firstResultingDateAndTime;
bool parsingSuccessful = DateTime.TryParseExact(
firstDate,
customFormatForFirstDateTimeString,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out firstResultingDateAndTime);
Run Code Online (Sandbox Code Playgroud)
问题是parsingSuccessful结果false.对于第二个日期时间字符串,代码如下:
string secondDate = "2/17/2019 12:25:46 PM";
string customFormatForSecondDateTimeString = "m/dd/yyy hh:mm:ss PM";
string secondResultingDateAndTime;
parsingSuccessful = DateTime.TryParseExact(
secondDate,
customFormatForSecondDateTimeString,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out secondResultingDateAndTime);
Run Code Online (Sandbox Code Playgroud)
我也收到了
parsingSuccessful == false;
Run Code Online (Sandbox Code Playgroud)
我估计自定义格式字符串不适合日期时间字符串,但我无法弄清楚原因.请帮忙.先感谢您.
我从内置类型表(C# 参考)中获取了所有内置类型。有没有办法以编程方式获取此列表?我不知道如何使用反射,所以我不知道如何开始。我还没有代码。
我有两种显示方法:一种是项目列表,另一种是项目的 HashSet。方法是一样的。有没有办法用参数类型编写方法,这样我就可以使用相同的方法,而不管传递给方法的参数是什么类型:List<T>或HashSet<T>?
方法是:
public static void DisplayList<T>(List<T> list)
{
int i = 0;
foreach (T item in list)
{
Console.Write(item.ToString());
if (i < list.Count - 1)
{
Console.Write(", ");
}
i++;
}
Console.WriteLine();
}
public static void DisplayHashSet<T>(HashSet<T> set)
{
int i = 0;
foreach (T item in set)
{
Console.Write(item.ToString());
if (i < set.Count - 1)
{
Console.Write(", ");
}
i++;
}
Console.WriteLine();
}
Run Code Online (Sandbox Code Playgroud) 我已经在一个项目的类中创建了一个函数,并将其移至另一个项目的类中。在第一个项目中,所有内容都可以编译,但是在第二个项目中,我得到以下错误消息:...不包含“ OrderBy”的定义,也没有扩展方法“ OrderBy”接受类型为第一个参数的
List的扩展OrderBy在第二个项目中不存在,但在第一个项目中确实存在。两个项目中都设置了相同的.NET框架。我不确定我还应该寻找什么。
你能建议做什么吗?
谢谢,Paul Feher