2012-02-10 6 views
-2

WinForms TextAreaでは、バックスペース0x08のASCII値をプログラムでどのように使用しますか?私は、コンソールプログラムで試してみました:使用方法0x08

Console.WriteLine("Hello" + (char)0x8 + "World"); 

そして、私は期待どおりには示しています

:私は値を埋めるためにリサイズ TextAreaにしようとしたとして

HellWorld

txt.Text += "Hello" + (char)0x8 + "World"; 

このように表示されます。

私は、任意のテキストフィールドのイベントでアクセスしていないだけでは0x8というの 値を使用して期待どおりの表示をするために、キーボードのイベントを使用して 以外のトリガするためにバックスペースイベントを作るために何

enter image description here

テキストフィールドで "HellWorld"をプログラムで印刷します。

+3

'(char)8'ではなく、前の文字を削除してみませんか? – CodesInChaos

+0

TextBox.Textのエンコーディングを変更する.NET文字列のデフォルトのエンコーディングを忘れてしまいます。 –

+1

そういうことができるとしましょう。じゃあ何?その後、 "HellWorld"の "W"の前にカーソルを置き、バックスペースを押すと、バックスペースを削除して "HelloWorld"を取得します。これは、ユーザーが期待する動作ではありません。 – hvd

答えて

-2

バックスペース文字は、サーバーに文字を1文字ずつ送信するシンクライアント向けに導入され、エンドユーザーが既に送信された入力ミスを修正できるようにします。現代のアプリケーションでは、通常、クライアントアプリケーションは通常、ユーザーがデータを入力してサーバーに送信するまで待機するため、このような文字は使用できません。

TextBoxコントロールには、それがサポートされていない理由があります。なぜ、なぜこれが必要なのか不思議に思われる理由です。

とにかく、テキストボックスのテキストを設定する前に、自分でデータを前処理する必要があります。たとえば、正規表現を使用してこの動作をシミュレートすることができます。

+0

-1:文字とは関係がありません –

+0

「事件はありません」と「0x8だけの価値」と言われたので、文字に対処しなければならないと誤解していました。 –

+0

私は、文字操作は、テキストボックス内の文字を消去したり、カーソルを後ろに移動したりしないことを意味します。 –

1

文字とキー入力は直接関係しません。文字を消去するには、バックスペースキーをテキストボックスに入力する必要があります。

+0

downvoteの理由は? _I_理由がありました。 –

+0

私はキーボードのイベントを使用していないと言って、あなたはバックスペースキー押下として回答しました –

+0

申し訳ありませんが、私は.NETに書きませんでした。あなたは、文字列内の文字を使ってあなたが望むものを達成することはできません。 –

0

あなたがテキストボックスに入力して誰かをシミュレートする場合は、あなたがSendKeys.Send()、例えばを使用して、そうかもしれない:

txt.Select(); 
SendKeys.Send("hello"); 
SendKeys.Send(((char)0x8).ToString()); // send backspace using 0x08 
SendKeys.Send("{BS}"); // send backspace using predefined code 
SendKeys.Send("world"); 

しかし、文字列の前処理は、はるかに簡単(かつ安全)そうです、例えば:

var str = "hello"; 
txt.Text += str.Substring(0, str.Length-1); 

注:SendKeys.Sendがアクティブウィンドウにキーストロークを送信します。したがって、上記のコードが実行されている間に別のウィンドウにフォーカスが当たった場合、キーストロークは別のウィンドウで終了する可能性があります。

+0

0x08を使用した場所ではウィンドウに問題はありません –