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

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

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

Re[7]: dataGridViewのリフレッシュについて


(過去ログ 42 を表示中)

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

■21816 / inTopicNo.1)  dataGridViewのリフレッシュについて
  
□投稿者/ るな (1回)-(2008/07/10(Thu) 11:10:52)

分類:[C#] 

はじめまして☆

子フォームから親フォームのdataGridView1をリフレッシュする方法を教えてください。
簡単なサンプルコードを教えていただけると嬉しいです。
引用返信 編集キー/
■21819 / inTopicNo.2)  Re[1]: dataGridViewのリフレッシュについて
□投稿者/ カドルドエグ (2回)-(2008/07/10(Thu) 11:53:12)
No21816 (るな さん) に返信
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1016376915
同じような質問がありました。
単純にRefreshメソッドを使うだけならこれで大丈夫だと思います。
引用返信 編集キー/
■21826 / inTopicNo.3)  Re[2]: dataGridViewのリフレッシュについて
□投稿者/ るな (3回)-(2008/07/10(Thu) 13:15:36)
イメージはつくんですが・・・呼んでもまったくやり方がわからなくて・・・

素人ですみません。具体タ的に教えてもらえますか??
引用返信 編集キー/
■21828 / inTopicNo.4)  Re[3]: dataGridViewのリフレッシュについて
□投稿者/ カドルドエグ (3回)-(2008/07/10(Thu) 13:33:58)
No21826 (るな さん) に返信
>具体的に

こんな感じでしょうか。
サンプルということで、話題の中心になっている箇所以外は省略します。
一部を除き、コメントは先ほどのリンク先のを使用しています。
<<親フォーム:Form1:DataGridView×1、Form2を呼ぶためのButton×1>>
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 親Formは子Formに自身の参照を渡す
            new Form2(this).Show();
        }

        // 親FormにDataGridをRefreshする公開メソッドを定義
        public void DgvRefresh()
        {
            this.dataGridView1.Refresh();

            // ↓これはこのメソッドが機能したことを確認するため
            MessageBox.Show("リフレッシュしました。");
        }
    }

<<子フォーム:Form2:メソッド起動用Button×1>>
        public Form2()
        {
            InitializeComponent();
        }

        // 子Formに親Formのインスタンスを受け取る口を定義(コンストラクタ引数や公開プロパティなど)
        // ↑今回はコンストラクタの引数つきオーバーロードを作成しました
        private Form1 parentF1; // ←Form2全体でForm1のインスタンスを使えるようにするための変数
        public Form2(Form1 parent)
        {
            InitializeComponent(); // ←これを消すとForm2自身が表示されなくなるので消してはいけません
            parentF1 = parent;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 子Formは親FormのDataGirdをRefreshするメソッドを起動する
            parentF1.DgvRefresh();
        }

引用返信 編集キー/
■21834 / inTopicNo.5)  Re[4]: dataGridViewのリフレッシュについて
□投稿者/ るな (4回)-(2008/07/10(Thu) 14:30:03)
カドルドエグさんありがとうございます!!

「リフレッシュしました。」とメッセージは出るんですが
dataGridView1の表示は更新されないままなんですが・・・

まだうまくいってないんでしょうか??
引用返信 編集キー/
■21837 / inTopicNo.6)  Re[5]: dataGridViewのリフレッシュについて
□投稿者/ みきぬ (14回)-(2008/07/10(Thu) 15:09:53)
そもそも「リフレッシュ」って何のことをさしてます?

再描画のことじゃなくて、「親画面のDataGridViewに表示していた対象のデータを子画面で変更した後で、
親画面にその変更を反映させたい」ってんであれば、データの読み直しする処理とかアレコレがいります。
引用返信 編集キー/
■21886 / inTopicNo.7)  Re[6]: dataGridViewのリフレッシュについて
□投稿者/ るな (5回)-(2008/07/11(Fri) 14:26:12)
No21837 (みきぬ さん) に返信
> そもそも「リフレッシュ」って何のことをさしてます?
>
> 再描画のことじゃなくて、「親画面のDataGridViewに表示していた対象のデータを子画面で変更した後で、
> 親画面にその変更を反映させたい」ってんであれば、データの読み直しする処理とかアレコレがいります。

そうです!!そうしたいんです!!
リフレッシュ使うんじゃないんですか・・・??
引用返信 編集キー/
■21903 / inTopicNo.8)  Re[7]: dataGridViewのリフレッシュについて
□投稿者/ みきぬ (17回)-(2008/07/11(Fri) 16:26:16)
No21886 (るな さん) に返信
> リフレッシュ使うんじゃないんですか・・・??
これが「Refreshメソッドを使う」という意味であれば、違います。
なぜなら、親画面は子画面で新しくしたデータを持っていないからです。
Refreshメソッドは単に再描画をするだけですので、新しいデータを親画面で表示してはくれません。

子画面を閉じた後、親画面はもう一度データを取得しにいって、表示しなおしてあげればいいわけです。
そのために何を書けばいいのかは、親画面を初めて表示するときに書いた処理が参考になるんじゃないかと。

# 「リフレッシュという言葉を使う」という意味であれば…
# 全く間違いということはないと思いますが、勘違いしちゃうかなあ。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -