これはこれまでのところ最良の選択肢ではありませんが、依然として選択肢です。フォームKeyPreview
をtrueに設定し、KeyDown
キーイベントハンドラをフォームに追加し、Click
イベントハンドラをラベルに追加します。 Clickイベントハンドラで、boolをtrueに設定します。 keydownハンドラの中で、boolがtrueの場合、ラベルText
のプロパティに押されたキーを追加するifステートメントがあります。ユーザーがラベルをクリックしたときに入力したものがラベルに入ると、そのようになります。私の恐ろしい説明については
例コード:
public static Form f1 = new Form();
public static Label l1 = new Label();
public static bool isLabelClicked = false;
次にどんな方法でこれらを置くには、フォームとそれのオブジェクトのプロパティを設定します。それは」didnの
f1.KeyPreview = true;
l1.Click += new EventHandler (l1_Clicked);
f1.KeyDown += new KeyEventHandler (f1_keydown);
は、その後、あなたのプロジェクトでこれらの2つの方法
public static void l1_Clicked(object sender, EventArgs e)
{
isLabelClicked = true;
}
public static void f1_keydown(object sender, KeyEventArgs e)
{
if (isLabelClicked == true)
{
if (e.KeyCode == Keys.A)
{
l1.Text += "a";
}
else if (e.KeyCode == Keys.B)
{
//Etc. For each key
}
}
}
を持ってそれはそれを行うための最も効率的な方法ではありません、あなたはその後ブール虚偽を作るための方法を設定する必要があるだろう入力したたびにラベルの値が変更され続けるが、うまくいく。
巨大なif、else ifブロックを書き出すことなく、それぞれの異なるキーを処理する簡単な方法があると確信しています。「、」は「Oemcomma」になる可能性があるためKeyCodeを変換するだけです。あなたのコーディングで幸運を。
ラベルは入力用に使用されていません。テキストボックスを使用して、テキストフィールドをラベルのテキストにバインドすることができます。 –
私は、ラベルの編集機能を実行するためにコンテキストメリットを実装することを考えています。その後、テキストボックスをポップアップしてラベルに割り当てることができますか? – blackfury
'single/double click'で' label'を 'textbox'に変更することができます。 – Taleeb