2014-02-11 12 views
1

如何确保当您点击标签时,应用程序期望按任意键,并且当用户按下按键时,标签文本会变为此键字符?如何做WF中的label.text = readKey

好了,现在我有:

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

如果我按上,下,左,右,Tab键或回车键,应用程序没有响应,并仍预计按键。只有当我按任何其他键时,应用程序才能正常工作。

如果我创建一个新项目并粘贴相同的代码,所有工作都很好,对于Up,Down,Left和Right也是如此,但是我需要这个键用于我的应用程序。

+0

按住任意键的同时按住鼠标按钮?或者点击(按下并释放)鼠标按钮,然后按任意键?这个很重要。 –

+0

点击,不按住鼠标按钮 –

回答

0

您可以处理表上KeyDown事件并获得KeyValue如下

试试这个:

您需要将表格KeyPreview属性设置为TrueForm

收到的关键事件
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; 
    } 
+0

无论用户是否点击了标签或不是用户,它总是会将按键按下。 – Iqbal

+0

@Iqbal:抱歉我的错误,现在更新了我的答案。谢谢。 –

+0

是的,在特定情况下很好,但如果有多个标签控制,该怎么办? :p试着弄清楚。 – Iqbal

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

问候函