【发布时间】:2016-03-15 07:07:51
【问题描述】:
请告诉我,当 CAPS_LOCK 键启用时,我如何在 StatusStrip 中显示。 我尝试按照以下示例进行操作: one 和 two 但我的应用程序中没有显示任何内容。 我创建了一个新项目,添加了 StripStatusLabel 元素并尝试将任何信息带入其中。 奇怪的是只在初始化方法中获得显示:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
toolStripStatusLabel1.Text = "111";
}
}
但在其他方法中它不起作用。
using System.Diagnostics;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//toolStripStatusLabel1.Text = "111";
}
public void Form2_KeyDown(object sender, KeyEventArgs e)
{
Debug.Write("123");
toolStripStatusLabel1.Text = "222";
}
}
}
Windows 窗体。网络框架 4.5 附注抱歉这个愚蠢的问题:)
更新: enter image description here
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyDown += tst;
}
public void TextBoxTest()
{
textBox1.Text = "onetwo";
}
private void tst(object sender, KeyEventArgs e)
{
if ((e.KeyCode & Keys.KeyCode) == Keys.CapsLock)
{
if (Control.IsKeyLocked(Keys.CapsLock))
toolStripStatusLabel1.Text = "Caps";
}
}
}
}
但是输出不起作用。 请告诉我我做错了什么
【问题讨论】:
-
使用表单的 KeyDown 事件还不够好,它只能在表单没有任何可以获取焦点的控件从而获取 KeyDown 事件时触发。 Read this.
-
由于
CapsLock可以在您的应用程序没有焦点时打开或关闭,作为一个简单可靠的解决方案,您可以在Application.Idle事件中检查CapsLock状态。处理表单的键盘事件不足以检测键锁定状态的变化,您还应该将逻辑放在其他一些地方,例如表单的激活事件,或者您需要注册一个全局键盘挂钩。
标签: c# winforms capslock num-lock