- - PR -
TextBoxのBackColorについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-01-29 15:08
OS=WindowsXPにおいてVB.NET 2003にて1個のFormにTextBoxを100個ほど並べました。
入力であることがわかるようにプロパティにてFormのBackColorをWhiteにし、TextBoxのBackColorをAquamarineに設定しました。 いざFormを表示させると画面上でTextBoxのBackColorがWhite(若しくは下の画面)からAquamarineへ変わっていくのがわかります。あまり見た目がよくないので最初からAquamarineで表示させたいのですが方法がわかりません。 | ||||
|
投稿日時: 2004-01-29 15:38
ケイゴです。
いまいち状況が分からないのですが… 普通にフォームデザイナのプロパティで BackColorをAquamarinにすると最初からこの色になると思うんですが… もしかして、Form_Loadで一つ一つ設定しようとしてません? | ||||
|
投稿日時: 2004-01-29 15:46
ケイゴさんありがとうございます。
説明不足のようでした。 フォームデザイナのプロパティでBackColorを設定しているのですが、TextBoxが少ない場合ですとあまり気にはならないのですが、多くのTextBoxを表示させた場合にBackColorが変わっていくのが見えて気になっているのです。 | ||||
|
投稿日時: 2004-01-29 17:08
こんにちは。
それって単に表示速度が遅いだけでは??? (メモリとかが少なかったりして) スペックの高いPCで見ても同じですかね? _________________ まゆりん @ わんくま同盟 Blog る。 | ||||
|
投稿日時: 2004-01-29 17:49
自分の低速PC(PV600MHz)で、以下のコードを試してみましたが、 あまり気にならないというか... // file: testform.cs // compile csc /t:winexe testform.cs using System; using System.Windows.Forms; using System.Collections; using System.Drawing; namespace MyForms { public class TestForm : Form { public static void Main() { Application.Run(new TestForm()); } public TestForm() { Text = "Test Form"; Width = 820; Height = 650; BackColor = Color.White; CenterToScreen(); ArrayList b = new ArrayList(); for(int i = 0 ; i < 300; i++) { b.Add(new TextBox()); ((Control)b[i]).Visible = true; ((Control)b[i]).BackColor = Color.Aquamarine; ((Control)b[i]).Height = 18; ((Control)b[i]).Width = 78; ((Control)b[i]).Top = 20 * (i % 30); ((Control)b[i]).Left = 80 * (i / 30); Controls.Add((Control)b[i]); } } } } [ メッセージ編集済み 編集者: iStation 編集日時 2004-01-29 17:53 ] | ||||
|
投稿日時: 2004-01-29 18:22
ご返信ありがとうございます。
私の使用しているPCはPentium4-1.6GHzなのですが.... iStationさんのプログラムを参考にさせていただいてコードを書いてみました。 Public Class Form1 Inherits System.Windows.Forms.Form Dim mTxt(300 - 1) As TextBox #Region " Windows フォーム デザイナで生成されたコード " #End Region Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Width = 820 Me.Height = 650 Me.BackColor = System.Drawing.Color.White Me.StartPosition = FormStartPosition.CenterScreen Call kInit() End Sub Private Sub kInit() Dim rCnt As Integer For rCnt = 0 To UBound(mTxt) mTxt(rCnt) = New TextBox With mTxt(rCnt) .Visible = True .BackColor = System.Drawing.Color.Aquamarine .Height = 18 .Width = 78 .Top = (rCnt Mod 30) * 20 .Left = (rCnt \ 30) * 80 End With Call Controls.Add(mTxt(rCnt)) Next End Sub End Class kInitにて同様に300このTextBoxを表示させているのですがVB.NetのDebugにてアプリケーションを開始した場合全て表示し終わるのに約2秒ほどかかっています。 最初にTextBoxが表示された時はTextBox内はどうもVB.NetのDebug用のWindow(アプリケーション起動直前の画像)が透過しているような感じです。 VB6.0から.Netへ移行して何もわかっていない状態です。 すみませんがよろしくお願いいたします。 | ||||
|
投稿日時: 2004-01-30 09:05
表示速度が気になるなら、 いっそGridコントロールを使用するのはいかがですか? | ||||
|
投稿日時: 2004-01-30 09:51
ありがとうございました。
Gridについて考えてみます。 以前VB6の場合Loadイベントにて視覚的に表示データ等をそろえておいて、そろえ終わった段階でShowにて自身のFormを表示していたので、同じようなことが簡単にできると思っていました。 |