Visual Studio User Group

会員サービス
メンバー ログイン
新規会員登録はこちら
MENU
ホーム
イベント
VSUG アカデミー
VSUG Day
Bar VSUG
過去のイベント
フォーラム
初心者フォーラム
Visual Studio
.NET 開発
プラットフォーム運用
フリートーク・お知らせ
フォーラムの利用案内
VSUG キャスト
第 1 回 近藤 和彦 氏
第 2 回 長沢 智治 氏
記事
連載
コラム
About VSUG
VSUGとは
フォーラムリーダー紹介
ガジェット
スタッフ日記
フォーラムグループ
初心者フォーラム
初心者なんでも相談室
Visual Studio
Visual Studio 2005
Visual Studio 旧環境
.NET 開発
Visual Basic
Visual C#
Visual C++/CLI その他
Web アプリケーション
リッチクライアント・UI コントロール
データベース・データアクセス
モバイル・スマートクライアント
.NET Framework
開発プロセス
マイグレーション・COM 相互運用
Office 開発・VSTO
Web ホスティングアプリケーション
ライティング・セキュアコード
プラットフォーム運用
運用管理
フリートーク・お知らせ
談話室
VSUGからのお知らせ
フォーラムの利用案内
インフォメーション
会員規約
会員登録
プライバシーポリシー
リンクポリシー
著作権について
スポンサーについて
お問い合わせ
オンライン状態
オンライン状況 オンライン状態:
未登録ユーザー 未登録ユーザー: 44
登録ユーザー 登録ユーザー: 0
計 計: 44

オンライン中のユーザー オンライン中のユーザー:

 
  VSUG フォーラム  .NET 開発  Visual C#  DataGridViewの行追加について
前へ 前へ
 
次へ 次へ
新しい投稿 2009/01/12 15:12
ユーザーはオフラインです。 InoFu
28件の投稿
ランキングデータがありません


DataGridViewの行追加について 
修正者: InoFu   2009/01/12 15:16:02)
言語:C# / Ver:2008 / プラットフォーム:Windows XP

お世話になります。

DataGirdViewのCellをクリックすると、DataGirdViewCell.Valueにデータを入れるアプリケーションを作成しています。

 

そこで、次の問題が発生しました。

新規行(一番下の行)のCellをクリックしデータが入ると同時に、そこが新規行の場合、新たに新規行を追加したいのですが、Rows.Add()にて追加すると、一番下に新規行が入ってくれません。

(先ほどValueで追加した行の一つ上に追加されるような感じ?)

 

※目的の動作としては、新規追加行にキーボードからCellにデータを入れた場合に自動で新規行が追加されるような動作です。

 

具体的なコードは以下のような感じです。

private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)

{

   dataGridView1.CurrentCell.Value = "abc";

   //最新行の場合、行を追加する

   if (dataGridView1.Rows[e.RowIndex].IsNewRow)

   {

      dataGridView1.Rows.Add(); //ここで行が一つ上に入る

   }

}

 

説明が解かり難いかもしれませんが、宜しくお願いします。

 

 
新しい投稿 2009/01/26 13:11
ユーザーはオフラインです。 カドルドエグ
15件の投稿
ランキングデータがありません


Re: DataGridViewの行追加について 

 InoFu

Rows.Add()にて追加すると、一番下に新規行が入ってくれません。

一番下に新規行が「入っている(ように見える)」状態にしたい、ということでしょうか。
こちら(環境:VS2005・Windowsアプリ・DataGridView ×1・列3つ(全てstring))で実験してみましたが、現在行が新規のときに追加すると、「上」に追加されるのは避けられないようです。

なので、次のようにしてみたのですがいかがでしょうか。

----------------サンプルコード----------------
        int currentCellIndex = 0;
        private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            // RowsAddedイベントの時点では現在マウスが当たっているセルのインデックスは取得できない
            // ため、ここで記憶しておく
            currentCellIndex = dataGridView1.CurrentCell.ColumnIndex;

            if (dataGridView1.Rows[e.RowIndex].IsNewRow)
            {
                dataGridView1.Rows.Add();

                // さも新規行が下に作られたかのように見せるため
                dataGridView1.CurrentCell.Value = null;
            }
            else
            {
                dataGridView1.CurrentCell.Value = "既存に追加";
            }
        }

        private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {           
            dataGridView1.Rows[e.RowIndex].Cells[currentCellIndex].Value = "新規に追加";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            dataGridView1.Rows.Add();
        }
----------------------------------------

 
新しい投稿 2009/04/14 15:59
ユーザーはオフラインです。 InoFu
28件の投稿
ランキングデータがありません


Re: DataGridViewの行追加について 

ガドルドエグ様

 

返信が遅くなり大変申し訳ございません。

 

やっぱり上に追加するのは避けられないのですね。

サンプルコードを参考にして解決しました。

 

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

 
新しい投稿 2009/08/18 9:33
ユーザーはオフラインです。 ivan
1件の投稿
ランキングデータがありません


Re: DataGridViewの行追加について 

inherit from DataGridView, or choose another control.

such as gridview

 
 1/1ページ
前へ 前へ
 
次へ 次へ
  VSUG フォーラム  .NET 開発  Visual C#  DataGridViewの行追加について
ログイン | © Visual Studio User Group. All rights reserved. 著作権について | プライバシーポリシー | リンクポリシー | お問合せ