0

CAPS_LOCK キーが有効になっているときにStatusStripに表示する方法を教えてください。例に従ってみました: 1 つと2 つですが、アプリに何も表示されません。新しいプロジェクトを作成し、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 フォーム。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";
            }
        }
    }
}

しかし、出力は機能しません。私が間違っていることを教えてください

4

2 に答える 2

0

// キャップスロック

toolStripStatusLabel1.Text=IsKeyLocked(Keys.CapsLock).toString();  

// Num Lock

toolStripStatusLabel1.Text=IsKeyLocked(Keys.NumLock).toString();

フォームの KeyPreview プロパティを設定して true を設定します。このコードはフォームの key_down イベントです。

この前に、フォームの KeyPreview プロパティが false に設定されているため、IntializeComponent 以外の関数にテキストを配置することはできません。キーダウン イベントが確実に機能するようにしてください。

于 2016-03-15T07:18:04.820 に答える
-1

I solved it:

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;
}

Thanks all!

于 2016-03-16T05:28:29.293 に答える