- PR -

TextBoxのBackColorについて

投稿者投稿内容
T3HKYM
会議室デビュー日: 2004/01/29
投稿数: 15
投稿日時: 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で表示させたいのですが方法がわかりません。

ケイゴ
会議室デビュー日: 2003/10/01
投稿数: 15
投稿日時: 2004-01-29 15:38
ケイゴです。
いまいち状況が分からないのですが…
普通にフォームデザイナのプロパティで
BackColorをAquamarinにすると最初からこの色になると思うんですが…

もしかして、Form_Loadで一つ一つ設定しようとしてません?
T3HKYM
会議室デビュー日: 2004/01/29
投稿数: 15
投稿日時: 2004-01-29 15:46
ケイゴさんありがとうございます。
説明不足のようでした。
フォームデザイナのプロパティでBackColorを設定しているのですが、TextBoxが少ない場合ですとあまり気にはならないのですが、多くのTextBoxを表示させた場合にBackColorが変わっていくのが見えて気になっているのです。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-01-29 17:08
こんにちは。

それって単に表示速度が遅いだけでは???
(メモリとかが少なかったりして)
スペックの高いPCで見ても同じですかね?
_________________
まゆりん @ わんくま同盟
Blog る。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-01-29 17:49
引用:

T3HKYMさんの書き込み (2004-01-29 15:46) より:
フォームデザイナのプロパティでBackColorを設定しているのですが、TextBoxが少ない場合ですとあまり気にはならないのですが、多くのTextBoxを表示させた場合にBackColorが変わっていくのが見えて気になっているのです。


自分の低速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 ]
T3HKYM
会議室デビュー日: 2004/01/29
投稿数: 15
投稿日時: 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へ移行して何もわかっていない状態です。
すみませんがよろしくお願いいたします。
iStation
大ベテラン
会議室デビュー日: 2003/12/08
投稿数: 158
投稿日時: 2004-01-30 09:05
引用:

kInitにて同様に300このTextBoxを表示させているのですがVB.NetのDebugにてアプリケーションを開始した場合全て表示し終わるのに約2秒ほどかかっています。
最初にTextBoxが表示された時はTextBox内はどうもVB.NetのDebug用のWindow(アプリケーション起動直前の画像)が透過しているような感じです。

VB6.0から.Netへ移行して何もわかっていない状態です。
すみませんがよろしくお願いいたします。


表示速度が気になるなら、
いっそGridコントロールを使用するのはいかがですか?
T3HKYM
会議室デビュー日: 2004/01/29
投稿数: 15
投稿日時: 2004-01-30 09:51
ありがとうございました。
Gridについて考えてみます。
以前VB6の場合Loadイベントにて視覚的に表示データ等をそろえておいて、そろえ終わった段階でShowにて自身のFormを表示していたので、同じようなことが簡単にできると思っていました。

スキルアップ/キャリアアップ(JOB@IT)