• 締切済み

テキストボックス 自動スクロールでのちらつき

お世話様です。 VB.NET2003(WinXP Pro)でプログラミングしています。 標記の通り、テキストボックス(マルチライン)の描画がちらつく現象が出ています。 '表示は100行まで If TB1.Lines.Length >= 100 Then   TB1.Text = TB1.Text.Remove(0, TB1.Text.IndexOf(Lf)+1) End If TB1.AppendText(msg) テキストボックスへの表示は上記のコードを使用しているのですが、 >TB1.Text = TB1.Text.Remove(0,TB1.Text.IndexOf(Lf)+1) のコードで描画(カレット0)され >TB1.AppendText(msg) のコードで描画(テキスト長)される為、ちらついてしまいます。 AppendTextが終るまで一旦描画を止めたりすればちらつかないとは思うのですが、そういったことはできるのでしょうか。 また、他にちらつかない案があれば御教授いただきたく存じます。 宜しくお願いいたします。 ※ちなみに最新テキストへの自動スクロールと行数制限は必須です

みんなの回答

回答No.1

ループの最中にテキストボックスの text プロパティに設定するのではなく、String 型か StringBuilder 型の変数にためて、ループ後テキストボックスへ設定すればどうでしょうか?

SafeGuard
質問者

補足

回答ありがとうございます。 上記を実現するとなると以下のコードになるのですが Dim buffer As String '表示は100行まで If TB1.Lines.Length >= 100 Then   buffer = TB1.Text.Remove(0, TB1.Text.IndexOf(Lf)+1) End If TB1.Clear() TB1.AppendText(buffer) TB1.Clear()で同じこと(カレット0描画)が起こりちらついてしまいます。

関連するQ&A

  • 描画キャンパス内にテキストボックスを作成したい

    Windows 7 Ultimate 64 SP1、Word 2010で、描画キャンパス内にテキストボックスを作成するにはどうしたらいいですか。 次の(1)~(6)の順でクリックしたら、テキストボックスはできたのですが描画キャンパス外にできてしまいます。 (1)挿入 (2)図形 (3)新しい描画キャンパス (4)挿入 (5)「テキストボックス」の下向き黒色▼(※このクリックをする直前には描画キャンパスは画面上に表示されています) (6)シンプルテキストボックス(※このクリックをする直前には描画キャンパスは画面上に表示されています)

  • VB テキストボックスの数字を自動計算させたい

    VBの講義を始めて2週間の初心者です。課題で作らないといけないプログラムがあるのですが手詰まりました。助言をお願いします。 プログラムはアメフトの試合結果を計算するものです。 全てテキストボックスを5個用意し、うち4個に1回から4回までの得点を入力し、残り1個に合計点を表示させるものです。 ボタンはありません。テキストボックスのみです。もしかしたら、合計点表示はラベルかもしれませんがなんだか判別がつきません。 また、テキストボックスに数字を入力したら自動的に計算するように、と条件が出ています。 4つのテキストボックスに数字を入力し、1つのテキストボックスまたはラベルに合計を表示させるコードってどう書けばいいのでしょうか・・・?本やサイトを参照したりもしましたがどうもうまくいかず頭に疑問符が浮かぶだけです。 授業自体はまだ始まって間もなく、ハローワールド的な導入部分、主なコントロールの紹介、変数の宣言しかやっていないのでIFなど複雑なものコードは書かないとは思いますが・・・。

  • テキストボックスにスクロールする文字列を表示する。

    テキストボックスにスクロールする文字列を表示する方法を知りました。^^ これはできたのですが、同じページで、「★メッセージ1」の他に 「別の表示」をさせたいのですがどうしたらいいんでしょうか? 例えば、「★メッセージ2」。など  <HTML> <HEAD> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- msg="★メッセージ1     "; function scroll(){ msg=msg.substring(1,msg.length)+msg.substring(0,1); document.myform.mytext.value=msg; setTimeout("scroll()",300); } //--> </SCRIPT> </HEAD> <BODY onLoad="scroll()"> <CENTER> <FORM name="myform"> <INPUT name="mytext" size="20"> </FORM> </CENTER> </BODY> </HTML>

  • 文字をテキストボックスの中央に

    テキストボックスの中央に文字を表示する方法ってありますか? センタリングとはちょっと違います。 縦書きのテキストボックスに1行入っているのですが、どうも左右の余白が等しくないのです。 テキストボックスの大きさは、変えたくないので「文字列にあわせて描画オブジェクトの大きさを調整する」のチェックははずしています。 word2003 winXP 利用

  • htmlのテキストボックスに書かれた文字によって

    htmlのテキストボックスに書かれた文字によって表示する文字を変えたいのですが、コードがいまいちどうやって書いていいかわからないのでコードを教えて下さい。よろしくお願いします。 一応できなかったコード↓ <Form name="js"> <input type="text" name="txtb"> </Form> <script> <br> if(document.js.txtb.value="a"){document.write("a")} </script>

  • テキストボックスに「00000」を入力すると「0」になってしまう

    あるテキストボックスには5桁の半角数字を入力させるようにしたいと思っています。 このテキストボックスには以下の入力チェックをかけていますが、「00000」を入力すると「0」と判断されてしまい。一つ目のチェックに引っかかってしまいます。 これを文字列として判断する方法はありますか? または、以下のチェックに引っかからない方法はありますか? よろしくお願いいたします。 (codeにはvalueが入っています。) if(code == 0){ alert("入力してください。"); return false; } if(isFinite(code) == false){ alert("半角数字を入力してください。"); return false; } if(code.length != 5){ alert("5桁入力してください。"); return false; }

  • 効率の良いテキストボックスの検知について

    VB6の初心者です。質問させていただきます。 画面上に5つのテキストボックス(TEXT1、TEXT2、TEXT3、TEXT4、TEXT5)と 1つのコマンドボタン(Cmd_SAVE)があり、 画面上の5つのテキストボックスをすべて記入し、 コマンドボタンを押すと、登録確認のメッセージボックスが表示され、 OKボタンを押すと、サーバへ転送され、 画面上のテキストボックスにひとつでも空欄があると、どのテキストボックスが 空欄であるかを示すメッセージが表示される処理をさせています。 そこで質問なのですが、今、メッセージボックス、登録処理は出来るようになったのですが、 とても処理の効率が悪い、もっと空欄を確認するのにすっきりとしたコードはある、と知り合いに言われました。 おそらく、繰り返し等を用いると思うのですが、メッセージにそれぞれのオブジェクト名を代入するやり方がわかりません。 下記が今のコーディングです。 Private Sub Cmd_SAVE_Click()   If TEXT1.Text = "" Then      MsgBox "TEXT1が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT2.Text = "" Then      MsgBox "TEXT2が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT3.Text = "" Then      MsgBox "TEXT3が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT4.Text = "" Then      MsgBox "TEXT4が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT5.Text = "" Then       MsgBox "TEXT5が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub どのような書き方がきれいで、効率的なコーディングなのでしょうか? ご教示お願いします!

  • テキストボックスの処理について教えて下さい。

    テキストボックスの処理について教えて下さい。 txtTanka1.Text というテキストボックスがありまして、単価を入れるところです。 単価には小数1位までのものがあります。 でも表示をそろえるために、すべて小数1位まで表示したいと思っています。 「3.0」と入力すると→表示は「3.0」 「5.5」と入力すると→表示は「5.5」 「4」と入力しても→表示は「4.0」 にしたいと思って下のコードを書きましたが、思うように動きません。 doubTanka = 0 doubTanka = CDbl(txtTanka1.Text) txtTanka1.Text = CStr(Format(doubTanka, "#,###.#")) どなたか、原因と対処方法を教えて下さい。 よろしくお願いします。 ちなみにWindows7とVB2008 です。

  • テキストボックスからコンボボックスへ自動入力したい

    AccessVBA初心者です。 Access2003を使用しています。 formAフォーム上の非連結textBテキストボックスに英字を入力 して、exe実行ボタンをクリックしたら、Cテーブルに連結した cmbCコンボボックスに該当文字列を表示したいです。 Private Sub exe_Click() If Me.textB.Value = "A" Then Me.cmbC.Value = 1 Else Me.cmbC.Value = 2 End If End Sub 実行ボタンをクリックしても、コンボボックスの内容は変わり ません。 if文にブレークポイントを設定してステップインで一行ずつ実 行するとコンボボックスに数字にあった文字列が表示できます。 うまく表示できるように、よろしくお願い致します。

  • VBA 空白テキストボックスカウント

    こんにちは、よろしくお願いします。 ユーザーフォーム上にテキストボックスが 1-31が4段あります。 1-31には数字が入っているところもあれば、空白の所もあります。 このなかの数字が入っているテキストボックスの数をカウント したいのですがうまくいきません。 自分なりにやってみたこと テキストボックスの空白を数えて Dim i As Integer For i = 1 To 31 If Controls("TextBox" & i).Value = "" Then s_su.Text = Exit Sub s_suはカウントされた数字を表示するテキストボックスです。 上の式の =の右側に何を書いたらいいかがわかりません。 純粋に空白のテキストボックスを数えることは可能でしょうか。 また上記のテキストボックスを1-31数字の合計を別のテキストボックスに 表示しようと思いますが、 val(TextBox1.Text) + val(TextBox2.Text)~これを31回書いてますが もっとスマートに書けるようなコードはありますか。