- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-10 18:01
次のコードで件名の現象が起こります。何故ですか?
コード: |
|
public class Form1 : System.Windows.Forms.Form
{
private くるくる変わる くるくる = new くるくる変わる();
private System.Windows.Forms.Button button1 = new System.Windows.Forms.Button();
public Form1() {
this.SuspendLayout();
this.button1.Text = "ここをクリック";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.Controls.Add(this.button1);
this.ResumeLayout(false);
}
private void button1_Click(object sender, System.EventArgs e) {
this.くるくる.頁設定();
}
}
public class くるくる変わる
{
//コンストラクタ
private System.Drawing.Printing.PrintDocument doc;
private System.Windows.Forms.PageSetupDialog dlg;
public くるくる変わる() {
this.doc = new System.Drawing.Printing.PrintDocument();
this.dlg = new System.Windows.Forms.PageSetupDialog();
this.dlg.Document = this.doc;
}
//頁設定メソッド
public void 頁設定() {
this.dlg.PageSettings = this.doc.DefaultPageSettings;
if (this.dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) {
return;
}
this.doc.DefaultPageSettings = this.dlg.PageSettings;
}
}
|
頁設定ダイアログボックスでキャンセルすると何も変わりません。
OKボタンを押す度に、余白値が変わります。
|
- 囚人
- ぬし
- 会議室デビュー日: 2005/08/13
- 投稿数: 1019
|
投稿日時: 2006-03-10 18:12
「くるくる変わる」というのは正確に言うとどういう現象ですか?
「変更したのに元に戻る」
「変更したつもりがないのに変更される」
_________________ 囚人のジレンマな日々
|
- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-10 18:22
囚人さん、こんばんは。お疲れ様です。
引用: |
|
囚人さんの書き込み (2006-03-10 18:12) より:
「くるくる変わる」というのは正確に言うとどういう現象ですか?
「変更したのに元に戻る」
「変更したつもりがないのに変更される」
|
「変更したつもりがないのに変更される」です。
スレ元のコードで再現できるのですが、スレ元のコードでは、一点の曇りも無く、
何の処理もしておりません。
コード: |
|
public void 頁設定() {
this.dlg.PageSettings = this.doc.DefaultPageSettings;
if (this.dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) {
return;
}
this.doc.DefaultPageSettings = this.dlg.PageSettings;
// ↑
// この人は、値を貰って次回渡しているだけなのに余白を変えてしまう。
}
|
もしや、僕の環境だけとか・・・
ちなみに、
WinXP Pro Ver2002 SP2
VC#2005
ですが。
[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-10 18:29 ]
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-10 18:24
10 -> 3.9 -> 1.5 -> とかに変わるってやつですか?
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-10 18:30
引用: |
|
じゃんぬねっとさんの書き込み (2006-03-10 18:24) より:
10 -> 3.9 -> 1.5 -> とかに変わるってやつですか?
|
そうです。
同じ値です。最後は 0 になります。
[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-10 18:30 ]
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2006-03-10 18:37
引用: |
|
R・田中一郎さんの書き込み (2006-03-10 18:22) より:
コード: |
|
public void 頁設定() {
this.dlg.PageSettings = this.doc.DefaultPageSettings;
if (this.dlg.ShowDialog() != System.Windows.Forms.DialogResult.OK) {
return;
}
this.doc.DefaultPageSettings = this.dlg.PageSettings;
// ↑
// この人は、値を貰って次回渡しているだけなのに余白を変えてしまう。
}
|
|
「渡している」っていうか... "参照" を初めに渡しているので無意味ですよ...
既に双方ともに "同じもの" を指し示しています。
まあ、Clone にしたとしても、この現象は起きると思います。
コード: |
|
this.dlg.ShowDialog();
|
だけでもきっと再現するでしょう。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- R・田中一郎
- ぬし
- 会議室デビュー日: 2005/11/03
- 投稿数: 979
|
投稿日時: 2006-03-10 19:04
引用: |
|
じゃんぬねっとさんの書き込み (2006-03-10 18:37) より:
「渡している」っていうか... "参照" を初めに渡しているので無意味ですよ...
既に双方ともに "同じもの" を指し示しています。
まあ、Clone にしたとしても、この現象は起きると思います。
|
納得です。言われてみれば、確かに意味は無いですね。
どこからか持ってきたサンプルをコピーしたので何も考えていませんでした。
コード: |
|
public class Form1 : System.Windows.Forms.Form
{
private くるくる変わる くるくる = new くるくる変わる();
private System.Windows.Forms.Button button1 = new System.Windows.Forms.Button();
public Form1() {
this.SuspendLayout();
this.button1.Text = "ここをクリック";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.Controls.Add(this.button1);
this.ResumeLayout(false);
}
private void button1_Click(object sender, System.EventArgs e) {
this.くるくる.頁設定();
}
}
public class くるくる変わる
{
//コンストラクタ
private System.Drawing.Printing.PrintDocument doc;
private System.Windows.Forms.PageSetupDialog dlg;
public くるくる変わる() {
this.doc = new System.Drawing.Printing.PrintDocument();
this.dlg = new System.Windows.Forms.PageSetupDialog();
this.dlg.Document = this.doc;
this.dlg.PageSettings = this.doc.DefaultPageSettings;
}
//頁設定メソッド
public void 頁設定() {
this.dlg.ShowDialog();
}
}
|
しかし、どうして、余白はくるくる変わってしまうんでしょう。
結局、外側で値を管理するしかないようですね。
[ メッセージ編集済み 編集者: R・田中一郎 編集日時 2006-03-10 19:08 ]
|
- Hongliang
- ぬし
- 会議室デビュー日: 2004/12/25
- 投稿数: 576
|
投稿日時: 2006-03-10 19:13
PageSetupDialog 余白 - Google 検索
|