如何在WFA中执行label.text = readKey

时间:2014-02-11 13:53:12

标签: c# winforms

如何确保当您点击标签时,应用程序希望按任意键,当用户按下键时,标签文本会更改为此密钥字符?

好的,现在我有:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    bool isLabelClicked = false;

    private void label1_Click(object sender, EventArgs e)
    {
        isLabelClicked = true;
    }

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (isLabelClicked)
        {
            label1.Text = ((char)e.KeyValue).ToString();
            isLabelClicked = false;
        }
    }
}

如果我按Up,Down,Left,Right,Tab或Enter,应用程序没有响应,仍然需要按键。只有当我按任何其他键时,应用程序才能正常运行。

如果我创建新项目并粘贴相同的代码,一切正常,对于Up,Down,Left和Right,但我需要这个键用于我的应用程序。

2 个答案:

答案 0 :(得分:1)

这个例子是一个textBox类:按任意键时显示它

using System;
using System.Windows.Forms;
using System.Drawing;

namespace KeyPressDisplayTextBox {
public partial class Form1 : Form {
    private TextBox textBox1;
    private Label label1;

    public Form1() {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e) {
        textBox1 = new TextBox();
        textBox1.Location = new Point(10,10);
        textBox1.KeyPress += textBox1_KeyPress;
        Controls.Add(textBox1);

        label1 = new Label();
        label1.Location = new Point(10, 40);
        label1.BorderStyle = BorderStyle.FixedSingle;
        label1.Font = new Font("Arial", 14);
        Controls.Add(label1);
    }

    void textBox1_KeyPress(object sender, KeyPressEventArgs e) {
        label1.Text = e.KeyChar.ToString();
    }
 }
}

祝你好运

答案 1 :(得分:0)

您可以在表单上处理KeyDown事件并获取KeyValue,如下所示

试试这个:

您需要将表单KeyPreview属性设置为True,以便从Form

接收关键事件
   bool isLabelClicked = false;

   private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (isLabelClicked)
        {
            label1.Text = ((char)e.KeyValue).ToString();
            isLabelClicked = false;
        }
    }

    private void label1_Click(object sender, EventArgs e)
    {
        isLabelClicked = true;
    }