• ベストアンサー

C# テキストボックスについて

フォームに置いたテキストボックスに フォーカスを入れると カーソルが点滅するごとに,オーバーライドした OnPaintのハンドラーにイベントが引っかかります。これは当然のことなのでしょうか? カーソルが点滅したぐらいでPaint処理をするのはわずらわしいし不都合がある場合があります。 なので,イベントが引っかからない(起きない)ようにするか,または OnPaintハンドラー内において Paintイベントが起きたのはテキストボックスであるということを知る方法はないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

オーバーライドしたのはFormクラスのOnPaint()メソッドですか? 再描画不要な場合ならば走行しませんが。 また、Form.ActiveControlプロパティによって、現在アクティブな コントロールを得ることができますから、OnPaint()内でそれを 利用して判定可能と思われます。

kwmvtz
質問者

お礼

お礼遅くなりました。 テキストボックスからの呼び出しにより何度も同じOnPaint処理を繰り返すという今回の問題は 「 ActiveControlプロパティ」を利用することで 阻止することができました。 ありがとうございます。 元々テキストボックスコントロールがこんなに何度も細かくPaintイベントを起こしているものとは知りませんでした。 ところで >再描画不要な場合ならば走行しませんが。 とおっしゃっておられる事についてなのですが,これはプログラムの作り方によってOnPaintハンドラーそのものに入らないようにできるのではないのかなどと妄想してしまいましたがいかがなもので御座いますやら。 なお私C#に浅いので確かでないのですが override OnPaint()は class Form1:Form の中に置いたものであります。

関連するQ&A

  • テキストBOXについて

    フォーム上にテキストボックスを配置して実行すると カーソル(入力するための)がきて点滅してしまいます。 そうしなくていい方法はあるのでしょうか?

  • テキストボックスでのカーソルについて

    VB6で作ったフォームでテキストボックスにフォーカスが移ったときに既に入っている文字列の先頭にカーソルがいるのですが、これを文字列をすべて選択した様に(反転表示)にならないか、または文字列の最後尾にカーソルを置けないか、悩んでいます。よろしくお願いいたします。

  • テキストボックスがなくなる!?

    更新前処理のイベントプロシージャで、入力すればテキストボックス表示・未入力ならばテキストボックス非表示に設定しました。そのときはうまくいくのですが、いったんフォームを閉じて新たに開けると、入力しているのに元のテキストボックスしか表示されていなくて、でも、レコードのデータは消えてないのです。このほかに設定しないとだめなんですか?

  • テキストボックスでConfirmMessage

    お世話になっております VB.NET 2010 Windows7 Windowsフォーム画面の開発をしています ConfirmMessageのテキストボックス版を作成しようとしています 特定の文字を入れるまで処理をしないという動きを作成したいのですが、どうもできません 「Form_Closing」に、「TextBoxに"Y"が入れられれば「画面を閉じる」、"N"なら「画面は閉じない」という 処理等です イベントだけでなく、関数にも"Y"が入れられたら処理A、"N"が入れられたら処理Bという風に、 confirmの「はい」「いいえ」みたいにテキストボックスを制御したいです とりあえず、TextBoxのValidating処理に、「"Y"か"N"が入れられるまではフォーカスが抜けない」という 処理を入れ、Timerを入れました しかし、ここからがわかりません・・・ すいませんが、ご教授お願いします m(_ _)m

  • テキストボックス内のカーソル

    使用ソフト:Access2000 使用OS:Windows2000 WindowsXP チェックボックスを押すと、該当するテキストボックスに カーソルを移動するようにしています。 If IsNull(txt処理日) Then txt処理日 = Date End if txt処理日.SetFocus この場合、テキストボックス内に(今日なら、18/03/06)と入り、 すべての数字が選択状態になります。 これを、カーソルが右端に(今日なら、6の右端に)点滅している 状態にするにはどのように変更すればよろしいのでしょうか。

  • サブフォームのテキストボックスにフォーカスを戻す

    Access2010です。 メインフォームにいくつかのテキストボックスやコンボボックスと「登録」ボタンがあり、メインフォームの中には帳票形式のサブフォームがあります。 サブフォームには ・数量 ・単価 ・金額 のテキストボックスがあります。 フォーカスがサブフォームのいずれかのテキストボックスにある状態で、「登録」ボタンをクリックするとYES/NOボタンがある確認画面が表示されます。 そこでNOを選択した場合に、直前までフォーカスがあったサブフォームのテキストボックスへフォーカスを戻すにはどうしたら良いでしょうか?

  • テキストボックスの値変更時のイベント

    フォーム上のテキストボックスに、前の画面で入力したデフォルト値が表示されている状態で、テキストボックスの値を変更したらJavaScriptの関数でチェックさせたいと考えているのですがうまくいきません。 onChangeイベントは値を変更(例えば削除するなど)して、Enterキーを押すなりフォーカスを移すなりしないとイベントが発生しないので、変更されたら即座にチェックということができません 何かうまい方法はないでしょうか?

  • ワードのテキストボックスが

    ワード2003で,今まで普通に使えていたテキストボックスが使えなくなりました。 以前はテキストボックスを描くとその中に自動的にカーソルが点滅して,文字が打てたのですが,いま,線は引けるのですが,中に文字が打てなくなっています。描いたときも線が描かれるだけでカーソルも出てきません。どうすればよいでしょうか?

  • フォーカスがあるテキストボックスに文字を入れる

    GUIでテキストボックスとボタンを作っています。 ボタンをクリックすると、GUIのテキストボックスに書かれた文字がWebブラウザ側にあるテキストボックスへ挿入されるという処理をしたいです。 この処理は、ボタンを押す前にWebブラウザ上のテキストボックスにフォーカスを移し、その後ボタンを押したらフォーカスがある位置に文字を挿入すればできるのではと考えたのですが。。。 フォーカスがある位置に文字を挿入させるやり方がわかりません。 どなたか分かる方教えてください><;

  • フォームのテキストボックス内の改行について

    セルが繰返し処理で選択させるのですが。 その選択されるセルをいちいち、フォーム内のテキストボックスに表示されるようにしたいのですが。 普通の改行は VbCrLf でおこなうのはわかるのですが、それぞれ、記述するコードが別になっていて、各文字列は変数に入っているのですが。 こういうときはどうすればいいのでしょうか。 ↓ ↓ 例 繰り返す処理の中で、テキストブックにかかるイベントはひたすら書き込みです。 フォーム1.text = Range("苗字").Value      処理 フォーム1.text = Range("苗字").Value       処理  フォーム1.text = Range("苗字").Value 上のを改行させてテキストボックスに並べたいのです。 例:  田中 佐藤 鈴木 ・  というように。 どなたかご教授お願い致します。

専門家に質問してみよう