- PR -

TextBoxのModifiedプロパティについて

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-26 11:34
TextBoxのModifiedプロパティについて質問があります。

フォームにTextBox1とButton1、Button2、Button3を1つずつ配置し
それぞれのイベントを以下のようにします。

フォームのロードイベントに
  Me.TextBox1.Text="hoge"
Button1のClickイベントに
  Me.TextBox1.Text="hoge"
Button2のClickイベントに
  Me.TextBox1.Modified = False
Button3のClickイベントに
  Me.TextBox1.Modified = True
 

フォームを起動し以下を確認しました。
A:
1.フォームを起動             →ModifiedはFalse Textはhoge
2.TextBox1のTextをhogehogeに変更する   →ModifiedはTrue  Textはhogehoge
3.1の後、Button2をクリック        →NodifiedはFalse Textはhogehoge
4.3の後、Button1をクリック        →ModifiedはFalse Textはhoge    ★

B:
1.フォームを起動             →ModifiedはFalse Textはhoge
2.TextBox1のTextをhogehogeに変更する   →ModifiedはTrue  Textはhogehoge
3.2の後、Button2をクリック        →NodifiedはFalse Textはhogehoge
4.3の後、TextBox1のTextをhogeに変更する  →ModifiedはTrue  Textはhoge
5.4の後、Button1をクリック        →ModifiedはTrue  Textはhoge    ★

C:
1.フォームを起動             →ModifiedはFalse Textはhoge
2.Button3をクリック            →ModifiedはTrue Textはhoge
3.2の後、Button1をクリック        →ModifiedはTrue Textはhoge    ★



Aの場合、最後に設定されたTextプロパティと比較している?
Bの場合、3のModified=False時点でのTextプロパティと比較している?
Cの場合、2のModified=True時点でのTextプロパティと比較している?

MSDNのヘルプにあるように単純に
「コントロールが作成されてから、またはコントロールが最後に設定されてから、
ユーザーがテキスト ボックス コントロールを変更したかどうかを示す値を取得または設定します。」
ではないような気がするのですが
規則性がわかりません。

ご教授お願いいたします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-09-26 11:51
引用:

「コントロールが作成されてから、またはコントロールが最後に設定されてから、
ユーザーがテキスト ボックス コントロールを変更したかどうかを示す値を取得または設定します。」


の通り、「ユーザが」変更したかどうか、ではないですか?
プログラムから変更するのは「ユーザが」とはいえないと思います。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-26 11:58
ちなみに、プログラムから Text プロパティを変更すると、
Modified プロパティは false にリセットされます。(これも仕様です)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-26 12:00
フォームを起動し以下を確認しました。
D:
1.フォームを起動             →ModifiedはFalse Textはhoge
3.1の後、Button3をクリック        →ModifiedはTrue  Textはhoge
2.TextBox1のTextをhogehogeに変更する   →ModifiedはTrue  Textはhogehoge
4.3の後、Button1をクリック        →ModifiedはFalse Textはhoge

ユーザーが変更したかどうかだと4はTrueのままではないのでしょうか?
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2006-09-26 12:04
http://dobon.net/vb/dotnet/control/tbmodified.html
ってことらしい。
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-26 12:07
じゃんぬねっと様

返信が前後してしまいました。

つまり
1.Modified=Falseを設定した時点でのTextプロパティがModified比較対象となり
その後、Textプロパティ変更してもModified=False時点でのTextプロパティがModified比較対象となる。
2.Modified=Trueを設定した時点でのTextプロパティがModified比較対象となり
その後、Textプロパティ変更するとTextプロパティ変更時点でのTextプロパティがModified比較対象となる。

ということでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-09-26 12:15
引用:

未記入さんの書き込み (2006-09-26 12:07) より:

つまり
1.Modified=Falseを設定した時点でのTextプロパティがModified比較対象となり
その後、Textプロパティ変更してもModified=False時点でのTextプロパティがModified比較対象となる。
2.Modified=Trueを設定した時点でのTextプロパティがModified比較対象となり
その後、Textプロパティ変更するとTextプロパティ変更時点でのTextプロパティがModified比較対象となる。

ということでしょうか?


"比較" と言うと御幣がありますね。
たとえば、"ABC" から "ABCD" に変更して "ABC" に戻した場合でも、Modified プロパティは true になります。

Modified プロパティは、Text プロパティを都度 "比較" しているわけではなく、
ユーザーの手によって (オペレーションによって) 1 度でも変化があったかどうかを示します。
Text プロパティが以前と "相違しているかどうか" を示しているわけではないわけです。

ですので、
 Modified プロパティは false にリセットされます。
と表現しました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-26 12:17
かずくん様

リンク先を拝見しました。

「プログラムでテキストボックスのTextプロパティやAppendTextメソッドにより内容を変えた時は、そのModifiedプロパティはFalseになります。」とありますが

その場合B-4、C-3ではModified=Falseになるのではないでしょうか?

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