■No67877 (初心者 さん) に返信 > private void dgv_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) > { > DataGridViewRow row = dgv.Rows[e.RowIndex]; > if (row.IsNewRow) > return; > Debug.WriteLine("RowIndex=" + e.RowIndex + " RowCount=" + e.RowCount); > } > > 5行のDataTableをバインドしたところ出力結果が以下のようになってしまいます。 > > RowIndex=0 RowCount=1 > RowIndex=1 RowCount=4 > RowIndex=0 RowCount=1 ← 余分 > RowIndex=1 RowC
例 次のコード例では、 イベントを CellValuePushed 処理して、更新プログラムと新しいエントリをデータ ストア オブジェクトに格納します。 この例は、リファレンス トピックで使用できる大きな例の VirtualMode 一部です。 #pragma region Data store maintance void VirtualConnector::dataGridView1_CellValueNeeded (Object^ sender, DataGridViewCellValueEventArgs^ e) { if (store->ContainsKey(e->RowIndex)) { // Use the store if the e value has been modified // and stored. e->Value = gcnew Int32(store->
public: event System::Windows::Forms::DataGridViewRowsAddedEventHandler ^ RowsAdded; public event System.Windows.Forms.DataGridViewRowsAddedEventHandler RowsAdded; public event System.Windows.Forms.DataGridViewRowsAddedEventHandler? RowsAdded; member this.RowsAdded : System.Windows.Forms.DataGridViewRowsAddedEventHandler Public Custom Event RowsAdded As DataGridViewRowsAddedEventHandler イベントの種類 例
例 次のコード例では、 イベントを NewRowNeeded 使用して新しい行が追加されるタイミングを追跡するため、イベント ハンドラーの CellValueNeeded ロジックで新しい行のセルを初期値に初期化できます。 この例は、リファレンス トピックで使用できるより大きな例の VirtualMode 一部です。 void VirtualConnector::dataGridView1_NewRowNeeded (Object^ sender, DataGridViewRowEventArgs^ e) { newRowNeeded = true; } void VirtualConnector::dataGridView1_RowsAdded (Object^ sender, DataGridViewRowsAddedEventArgs^ e) { if (newRowNeeded)
public: event System::Windows::Forms::DataGridViewCellValidatingEventHandler ^ CellValidating; public event System.Windows.Forms.DataGridViewCellValidatingEventHandler CellValidating; public event System.Windows.Forms.DataGridViewCellValidatingEventHandler? CellValidating; member this.CellValidating : System.Windows.Forms.DataGridViewCellValidatingEventHandler Public Custom Event CellValidating As
(.Net)DataGridViewでの入力チェックはCellValidatingだけではダメの続きとなります。 前回の最後で、「この場合だと、一つでも入力エラーとなれば、正しい値を入れるまで何もできない(フォームを閉じることさえ)ので、実装には工夫が必要」と書きました。 今回はその工夫の1つで、間違った入力をされたら、その行は消すという方法です。 列数が1つとか2つかの場合には有効だと思います。 実際に行を消すのは RowValidated イベントで行っています。 厄介だったのは、Row.Delete() のときにまた、RowValidated イベントが走ってしまうという点です。 これを回避するために、賢い方法ではないですが、例外を捕まえてキャンセルさせるという方法にしました。もっといい方法はないんでしょうかね。 下記がコードです。DataTable等の環境は前回と同じです。 Pub
上記DataTableを生成するコードは以下です var dt = new DataTable(); dt.Columns.Add("F1", typeof(string)); dt.Columns.Add("F2", typeof(string)); dt.Columns.Add("F3", typeof(string)); var row = dt.NewRow(); row["F1"] = "A01"; row["F2"] = "B01"; row["F3"] = "C01"; dt.Rows.Add(row); row = dt.NewRow(); row["F1"] = "A02"; row["F2"] = "B02"; row["F3"] = "C02"; dt.Rows.Add(row); row = dt.NewRow(); row["F1"] = "A03"; row["
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 public class DataSetController { /// <summary> /// 条件に当てはまるレコードをDataTableから削除します。 /// </summary> /// <param name="dt">データテーブル</param> /// <param name="filter">条件</param> /// <returns>0:正常終了 -1:異常終了</returns> public static int DeleteSel
DataRow オブジェクトからDataTable オブジェクトを削除するには、 オブジェクトの DataRowCollection メソッドと Delete オブジェクトの メソッドの 2 つのメソッドを使用できます。 Remove メソッドは DataRowCollection から DataRow を削除しますが、 メソッドは削除対象の行のみをマークします。Delete 実際の削除は、アプリケーションが AcceptChanges メソッドを呼び出すときに発生します。 Deleteを使用すると、実際に削除する前に、削除対象としてマークされている行をプログラムで確認できます。 行が削除対象としてマークされている場合、その RowState プロパティは Deleteに設定されます。 Delete オブジェクトを反復処理するときに、foreach ループでRemoveもDataRowCo
割と有名な話な気がしないでもないですが、開発中に一度躓いたので。。。 DataTableからDataRowを削除する方法は以下の二つです。 ・DataRowCollectionのRemoveメソッド(RemoveAtメソッドも同じ)を使用する。 (DataTable.Rowsプロパティを使う) ・DataRowのDeleteメソッドを使用する。 (参照:DataRowの削除 (外部リンク)) どう違うのかと言うと、 「Remove メソッドは DataRowCollection から DataRow を削除しますが、一方の Delete メソッドは削除対象の行をマークするだけです。」 とのこと。 まぁ、どういうことなのかというと、だいたい以下のような違いが生まれます。 1.Removeメソッドにより行を削除した場合、DataSetのHasChangesメソッドの結果はfalseになる 2.
注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 DataGridViewのAllowUserToAddRowsプロパティがTrueとなっており、ユーザーが新しい行を追加できる場合、DataGridViewの最後の行は新しい行(新規行、*行)になります。 ある行が新しい行であるかを調べるには、DataGridViewRow.IsNewRowプロパティを使用します。IsNewRowプロパティがTrueならば、新しい行です。 また、新しい行の行インデックスは、DataGridView.NewRowIndexプロパティで取得できます。新しい行が無い場合は、-1となります。 以下に、現在のセルのある行が新しい行かどうか調べる例を示します。
注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 新しい列が追加された時に、そのセルの既定値(デフォルト値)となる値を指定するには、DataGridView.DefaultValuesNeededイベントを使用します。DefaultValuesNeededイベントではセルの値の既定値だけでなく、セルスタイルやReadOnlyなどのプロパティの既定値を指定することもできます。 次の例では、Column1列の既定値を0、Column2列の既定値を"-"に設定しています。 'DefaultValuesNeededイベントハンドラ Private Sub DataGridView1_DefaultValuesNeeded(ByVal sender As Object, _ ByVal e As DataGridViewRowEventArg
例 次の例では、 オブジェクトの メソッドをNewRow呼び出して新しい DataRow をDataTable作成します。 private void CreateNewDataRow() { // Use the MakeTable function below to create a new table. DataTable table; table = MakeNamesTable(); // Once a table has been created, use the // NewRow to create a DataRow. DataRow row; row = table.NewRow(); // Then add the new row to the collection. row["fName"] = "John"; row["lName"] = "Smith"; tabl
public ref class DataColumn : System::ComponentModel::MarshalByValueComponent public class DataColumn : System.ComponentModel.MarshalByValueComponent type DataColumn = class inherit MarshalByValueComponent Public Class DataColumn Inherits MarshalByValueComponent 継承 例 次の例では、複数DataColumnのオブジェクトを含む をDataTable作成します。 private void MakeTable() { // Create a DataTable. DataTable table = new DataTable("Pro
例 次の例では、2 つの DataTable オブジェクトと 1 つの DataRelation オブジェクトを作成し、新しいオブジェクトを に DataSet追加します。 その後、テーブルがコントロールに DataGridView 表示されます。 // Put the next line into the Declarations section. private System.Data.DataSet dataSet; private void MakeDataTables() { // Run all of the functions. MakeParentTable(); MakeChildTable(); MakeDataRelation(); BindToDataGrid(); } private void MakeParentTable() { // Create a new
DataGridViewのDataSourceを使用してデータの表示を行おうと しているのですが、いまいち使い方がわからなかったのでメモ書き。 DataGridView.DataSource プロパティ http://msdn.microsoft.com/ja-jp/library/system.windows.forms.datagridview.datasource.aspx DataSourceとして指定できるオブジェクトは ・IList インターフェイス。(1次元配列等) ・IListSource インターフェイス。(DataTable、DataSet) ・IBindingList インターフェイス。(BindingList<T>等) ・IBindingListView インターフェイス。(BindingSource等) using System; using System.Win
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く