Состояние Num Caps ScrollLock в StatusStrip WindowsForms
Подскажите, пожалуйста, как мне показать в StatusStrip, когда ключ CAPS_LOCK включен. Я пытался следовать примерам: один и два, но в моем приложении ничего не отображается. Я создал новый проект, добавил элемент 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 Forms.NETFramework 4.5 PS извините за глупый вопрос:)
ОБНОВЛЕНИЕ: введите описание изображения здесь
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";
}
}
}
}
Но вывод не работает. Подскажите пожалуйста что я делаю не так
2 ответа
Я решил это:
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
capsStatusLabel.ForeColor = IsKeyLocked(Keys.CapsLock) ? statusStrip1.ForeColor : statusStrip1.BackColor;
numStatusLabel.ForeColor = IsKeyLocked(Keys.NumLock) ? statusStrip1.ForeColor : statusStrip1.BackColor;
}
Спасибо всем!
// Caps Lock
toolStripStatusLabel1.Text=IsKeyLocked(Keys.CapsLock).toString();
// Num Lock
toolStripStatusLabel1.Text=IsKeyLocked(Keys.NumLock).toString();
Установите свойство KeyPreview вашей формы, чтобы установить значение true, напишите этот код как событие key_down вашей формы
До этого вы не можете поместить текст в функцию, отличную от IntializeComponent, потому что для свойства KeyPreview для вашей формы установлено значение false, убедитесь, что оно обязательно сделает работающим событие нажатия клавиши.