- PR -

空白で区切られた日付データを個別のTextBoxに表示したい

1
投稿者投稿内容
バニラミント
ベテラン
会議室デビュー日: 2005/05/27
投稿数: 58
投稿日時: 2007-12-27 18:13
テーブルの日付用フィールドに次のような感じでデータが入っています。
この項目に入る日付の最大個数は6個です。
2007/12/01[半角空白]2007/12/05[半角空白]2007/12/15・・・

このデータをWindowsフォームに表示するのですが、
フォームには6つのTextBoxがあり、順番にTextプロパティにセットしたいのです。

まずはこの項目を変数に入れて、それからSplitでわけてと考えたのですが
それ以降の処理で悩んでいます。

6個と限定されているので順番にifでチェックしていくしかないでしょうか?
↓このような感じで。
//
string testDate = "2007/12/01 2007/12/05 2007/12/15";
textArray = testDate.Split(' ');
if(testArray[0].Length > 0) { text1.Text = testArray[0].ToString(); }
if(testArray[1].Length > 0) { text2.Text = testArray[1].ToString(); }
if(testArray[2].Length > 0) { text3.Text = testArray[2].ToString(); }

アドバイスをお願いできれば幸いです。
よねKEN
ぬし
会議室デビュー日: 2003/08/23
投稿数: 472
投稿日時: 2007-12-27 18:28
引用:

バニラミントさんの書き込み (2007-12-27 18:13) より:
6個と限定されているので順番にifでチェックしていくしかないでしょうか?
↓このような感じで。
//
string testDate = "2007/12/01 2007/12/05 2007/12/15";
textArray = testDate.Split(' ');
if(testArray[0].Length > 0) { text1.Text = testArray[0].ToString(); }
if(testArray[1].Length > 0) { text2.Text = testArray[1].ToString(); }
if(testArray[2].Length > 0) { text3.Text = testArray[2].ToString(); }

アドバイスをお願いできれば幸いです。




text1〜text6を予め(FormのLoadイベントなどで)TextBoxの配列に格納しておけば、
それ以降はその配列を使ってループで処理できます。
text1〜text6が本質的に同じ意味で同列に扱えるものなのであれば
この方法がお勧めです。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2007-12-27 18:31
よねKENさんと同じことを考えてた。
サンプルコードもつくちゃったし、捨てるのも悔しいので、置いてきます。

コード:
// あらかじめ、Loadイベント等で、TextBoxの配列に突っ込んでおいて、
private void Form_Load(object sender, EventArgs e) {
	textBoxArray = new TextBox[] {
		text1, text2, text3, text4, text5, text6
	};
}



日付セットするところで、ループ回す
コード:
// TextBoxの初期化
foerach (TextBox textBox in textBoxArray) {
	textBox.Text = "";
}

// 日付のセット
string[] textArray = testDate.Split(' '); 
for (int i = 0; i < textArray.Length; ++i) {
	textBoxArray[i].Text = textArray[i];
}


バニラミント
ベテラン
会議室デビュー日: 2005/05/27
投稿数: 58
投稿日時: 2007-12-28 14:23
よねKENさん、かずくんさんレスありがとうございました。
サンプルをさっそく試してうまくいきました。
お世話になりました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-12-30 15:10
引用:

バニラミントさんの書き込み (2007-12-27 18:13) より:

まずはこの項目を変数に入れて、それからSplitでわけてと考えたのですがそれ以降の処理で悩んでいます。
string testDate = "2007/12/01 2007/12/05 2007/12/15";
textArray = testDate.Split(' ');


私はここに反対です。 厳密に System.DateTime 型かどうかを検証あるいは ParseExact してから 1 つずつ要素を取り出すべきだと考えます。

というわけで、私なら配列にはしません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

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