2

全て

wxTextCtrl の "multiline" スタイルで文字数制限を実装するにはどうすればよいでしょうか。

私が必要です:1)制限に達したときにユーザー入力をブロックします(制限範囲内にある文字を保持するだけです)。2)ユーザーが文字列の任意の場所に入力または貼り付けするときは、カーソルを正しい場所(挿入文字列の直後)に保ち、1)を確認してください)

たとえば、数を 10 に制限します。 wxtextctrl に入力すると、次のようになります。

1) 文字数が 10 になるまで入力でき、それ以降は挿入できません (ただし、一部の文字を削除して入力することはできます)。例: 1234567890 と入力できます

2)文字数が制限に達しない場合、制限に達するまで、既存のテキストの任意の位置に文字を入力または貼り付けることができます。例: 1234 を入力し、既存のテキストの 2 と 3 の間に 34567890 を挿入したい。結果は 1234567834 で、カーソルは 8 の直後にある

これどうやってするの?

ありがとう

4

1 に答える 1

2

wxTextCtrl::SetMaxLengthメソッドを使用するだけです (バージョン 2.3.2 以降でのみ使用可能です。念のため)

編集: 上記の解決策は GTK+ では適用されません。その場合は、必要なことを拡張wxTextCtrlして実行するクラスを作成する必要があります。それを行うには、可能なアプローチ:

  1. 関数をオーバーライドしてSetMaxLength、クラスの属性に最大長を保存します
  2. イベントを処理しEVT_TEXT(id, func)ます。ハンドラーで、最大長に達した場合は、入力の無視を開始します (方法を理解する必要があります)。最大長を下回った場合は、入力を再度受け入れます。
于 2013-04-09T16:37:54.873 に答える