4

私はC#WinFormsで簡単な計算ベースのアプリを書いています。私の問題は、ボタンがキーボードにバインドされているためにクリック/フォーカスできない結果を表示するテキストボックスがあることです。テキストボックスにはContextMenuStripが必要ですが、テキストボックス内で処理する必要があるのはこのアクションのみです。また、このアプリの要件は、フォーカス可能なコントロールを持たないことです。Windowsの計算結果ボックスのようなもの。何かアドバイス?

4

6 に答える 6

4

カスタムテキストボックスを作成します。

public class TextBoxWithoutFocus : TextBox
{
    private const int WM_SETFOCUS = 0x7;

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SETFOCUS)
            return;

        base.WndProc(ref m);
    }
}

それで全部です。テキストボックスがフォーカスを受け取ることはありません(実際にはフォーカスを受け取りますが、外観は変わりません)。また、ユーザー入力を無効にする場合は、WM_CHARメッセージ(0x102)を抑制することを検討してください。

更新(ボタンで使用できるトリック):

public class ButtonWithoutFocus : Button
{
    public ButtonWithoutFocus()
    {
        SetStyle(ControlStyles.Selectable, false);
    }
}
于 2012-04-25T22:12:52.583 に答える
2

textBoxではなく、ラベルにします。textBoxのように見えるように寸法と背景を設定でき、ContextMenuStripがあります。

于 2012-04-25T21:48:52.377 に答える
1

TextBox.Enabled = False;と_TextBox1.ReadOnly = True;

于 2012-04-25T21:05:16.983 に答える
0

あなたTextBox.Enabled = falseのニーズを満たしていますか?

于 2012-04-25T20:57:55.960 に答える
0

これを試して

TextBox1.ReadOnly = True;
于 2012-04-25T20:58:11.810 に答える
0

焦点をぼかすには、これを行うだけです。

TextBox.Select(0, 0);
于 2015-01-14T10:22:37.853 に答える