C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: 子画面が変更されたか、親画面で判別するには?


(過去ログ 36 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■18375 / inTopicNo.1)  子画面が変更されたか、親画面で判別するには?
  
□投稿者/ 高木 (1回)-(2008/05/13(Tue) 21:07:45)

分類:[C#] 

Visual Studio2005で開発している初級者です。

子画面でデータが変更されたかどうか親画面で判別したいのですが、
どのようにすれはよろしいでしょうか?

子画面はモーダレスです。

子画面で編集・追加されているのに、親画面を閉じようとすると、
メッセージを表示し、使用者に閉じてよいか委ねる機能を作成したいです。

よろしくお願いします。
引用返信 編集キー/
■18376 / inTopicNo.2)  Re[1]: 子画面が変更されたか、親画面で判別するには?
□投稿者/ ダッチ (199回)-(2008/05/13(Tue) 21:25:01)
高木さん、こんにちは
ダッチです。

子画面で編集・追加されたタイミングをイベントなどで捕まえる事はできますか?

それができれば子画面に変更フラグを用意して
親画面を閉じようとした時に、
子画面の変更フラグがどのような状態になっているかを
子画面に問い合わせればいいと思います。

高木さんはどの部分ができないのでしょうか?

一気に全部をやろうとしないで、一つひとつ考えながらやってみてください。
引用返信 編集キー/
■18382 / inTopicNo.3)  Re[1]: 子画面が変更されたか、親画面で判別するには?
□投稿者/ 魔界の仮面弁士 (729回)-(2008/05/13(Tue) 22:20:55)
2008/05/13(Tue) 22:22:58 編集(投稿者)
No18375 (高木 さん) に返信
> 子画面で編集・追加されているのに、親画面を閉じようとすると、
> メッセージを表示し、使用者に閉じてよいか委ねる機能を作成したいです。

親側と子側の関連度が分かりませんが、その条件であれば、必ずしも
子画面の編集状況を、親側が把握しておく必要は無いような気もします。
閉じるときの終了確認は、子画面自身にやらせれば済むので。


public class ParentForm : Form
{
    ChildForm childForm = new ChildForm();
    public ParentForm()
    {
        Text = "親画面";
        Size = new Size(300, 100);
        Shown += delegate { childForm.Show(this); };
    }
}

public class ChildForm : Form
{
    TextBox textBox1 = new TextBox();
    public ChildForm()
    {
        Text = "サブ画面";
        Size = new Size(300, 100);
        textBox1.Text = "編集前の値";
        Controls.Add(textBox1);
        Button button1 = new Button();
        button1.Text = "保存済みにする";
        button1.Enabled = false;
        button1.Left = textBox1.Right;
        button1.Click += button1_Click;
        button1.AutoSize = true;
        Controls.Add(button1);
        textBox1.TextChanged += delegate { button1.Enabled = true; };
        FormClosing += ChildForm_FormClosing;
        StartPosition = FormStartPosition.WindowsDefaultLocation;
    }

    void ChildForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        // TextBox の内容が変更されていた時だけ保存確認
        if (textBox1.Modified)
        {
            e.Cancel = DialogResult.No ==
                MessageBox.Show(
                    "サブ画面の値が変更されています。\r\n" +
                    "まだ保存されていませんが、このまま閉じてもよろしいですか?",
                    "保存確認", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Question);
        }
    }
    
    void button1_Click(object sender, EventArgs e)
    {
        // 実際にはここに保存処理等が入る事になるかと。
        textBox1.Modified = false;
        ((Button)sender).Enabled = false;
    }
}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -