- PR -

DataGrid(System.Windows.Forms)の再描画のタイミング

1
投稿者投稿内容
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2005-01-14 10:54
VS.NET2003 で C#を使用してWindowsアプリケーションを作成しています。
DataGridコントロールを使用していますが、この DataSource に割り当てている DataTable に行を追加すると、そのタイミングでコントロールに反映されてしまいます。
行数が多くなるとうっとおしく感じるため、DataSource を編集中はコントロールを再描画しないようにしたいと思っています。

ちなみに現在のソースは以下のようになっています。
コード:
    DataTable dt = this.dataSet1.Tables["TableName"] ;
    dt.Clear() ;

    foreach(...)
    {
           :
        // 新規行の生成
        DataRow dr = dt.NewRow() ;
           :
        // 行の追加
        dt.Rows.Add(dr) ;
    }



どなたかよいアドバイスをいただければと思います。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2005-01-14 11:14
FormのSuspendLayout、ResumeLayoutメソッドを使うとか。

#あ、DataGridの上記メソッドでいいのか?
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2005-01-14 11:38
引用:

小野@どっとねっとふぁんさんの書き込み (2005-01-14 11:14) より:
FormのSuspendLayout、ResumeLayoutメソッドを使うとか。

#あ、DataGridの上記メソッドでいいのか?


SuspendLayout、ResumeLayoutメソッドはForm、DataGridともにためしてみたのですが、ResumeLayoutメソッドを呼び出す前に行が追加されてしまいます。
なぜなのでしょう?
Os_
ベテラン
会議室デビュー日: 2003/04/16
投稿数: 77
投稿日時: 2005-01-14 13:58
試していないので、はずしていたらすみません。

BindingManagerBaseのResumeBinding, SuspendBinding, および UpdateIsBinding
を使ったら、可能かも?
なかむら
ベテラン
会議室デビュー日: 2001/10/22
投稿数: 67
投稿日時: 2005-01-14 19:08
引用:

Os_さんの書き込み (2005-01-14 13:58) より:
試していないので、はずしていたらすみません。

BindingManagerBaseのResumeBinding, SuspendBinding, および UpdateIsBinding
を使ったら、可能かも?


BindingManagerBaseを試してみましたが、やはりだめでした。
せっかくいろいろと教えていただいたのですが、一度別のテーブルに格納しておいて、最後にDataSourceのテーブルに格納する方式に変更しました。
(さすがにこればっかりに時間をとってられないので…)

ありがとうございました。
1

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