- - PR -
TextBoxのModifiedプロパティについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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のヘルプにあるように単純に 「コントロールが作成されてから、またはコントロールが最後に設定されてから、 ユーザーがテキスト ボックス コントロールを変更したかどうかを示す値を取得または設定します。」 ではないような気がするのですが 規則性がわかりません。 ご教授お願いいたします。 | ||||
|
投稿日時: 2006-09-26 11:51
の通り、「ユーザが」変更したかどうか、ではないですか? プログラムから変更するのは「ユーザが」とはいえないと思います。 | ||||
|
投稿日時: 2006-09-26 11:58
ちなみに、プログラムから Text プロパティを変更すると、
Modified プロパティは false にリセットされます。(これも仕様です) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 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のままではないのでしょうか? | ||||
|
投稿日時: 2006-09-26 12:04
http://dobon.net/vb/dotnet/control/tbmodified.html
ってことらしい。 | ||||
|
投稿日時: 2006-09-26 12:07
じゃんぬねっと様
返信が前後してしまいました。 つまり 1.Modified=Falseを設定した時点でのTextプロパティがModified比較対象となり その後、Textプロパティ変更してもModified=False時点でのTextプロパティがModified比較対象となる。 2.Modified=Trueを設定した時点でのTextプロパティがModified比較対象となり その後、Textプロパティ変更するとTextプロパティ変更時点でのTextプロパティがModified比較対象となる。 ということでしょうか? | ||||
|
投稿日時: 2006-09-26 12:15
"比較" と言うと御幣がありますね。 たとえば、"ABC" から "ABCD" に変更して "ABC" に戻した場合でも、Modified プロパティは true になります。 Modified プロパティは、Text プロパティを都度 "比較" しているわけではなく、 ユーザーの手によって (オペレーションによって) 1 度でも変化があったかどうかを示します。 Text プロパティが以前と "相違しているかどうか" を示しているわけではないわけです。 ですので、 Modified プロパティは false にリセットされます。 と表現しました。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-09-26 12:17
かずくん様
リンク先を拝見しました。 「プログラムでテキストボックスのTextプロパティやAppendTextメソッドにより内容を変えた時は、そのModifiedプロパティはFalseになります。」とありますが その場合B-4、C-3ではModified=Falseになるのではないでしょうか? |