DataGridView.NewRowNeeded イベント
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)

Dim instance As DataGridView Dim handler As DataGridViewRowEventHandler AddHandler instance.NewRowNeeded, handler
public: event DataGridViewRowEventHandler^ NewRowNeeded { void add (DataGridViewRowEventHandler^ value); void remove (DataGridViewRowEventHandler^ value); }


NewRowNeeded イベントを使用して、新しい行がいつ追加されるかを追跡し、CellValueNeeded イベント ハンドラのロジックが新しい行のセルを初期値に初期化するコード例を次に示します。この例は VirtualMode のリファレンス トピックで取り上げている例の一部分です。
Dim newRowNeeded As Boolean Private Sub dataGridView1_NewRowNeeded(ByVal sender As Object, _ ByVal e As DataGridViewRowEventArgs) _ Handles dataGridView1.NewRowNeeded newRowNeeded = True End Sub Const initialSize As Integer = 5000000 Dim numberOfRows As Integer = initialSize Private Sub dataGridView1_RowsAdded(ByVal sender As Object, _ ByVal e As DataGridViewRowsAddedEventArgs) _ Handles dataGridView1.RowsAdded If newRowNeeded Then newRowNeeded = False numberOfRows = numberOfRows + 1 End If End Sub #Region "data store maintance" Const initialValue As Integer = -1 Private Sub dataGridView1_CellValueNeeded(ByVal sender As Object, _ ByVal e As DataGridViewCellValueEventArgs) _ Handles dataGridView1.CellValueNeeded If store.ContainsKey(e.RowIndex) Then ' Use the store if the e value has been modified ' and stored. e.Value = store(e.RowIndex) ElseIf newRowNeeded AndAlso e.RowIndex = numberOfRows Then If dataGridView1.IsCurrentCellInEditMode Then e.Value = initialValue Else ' Show a blank value if the cursor is just resting ' on the last row. e.Value = String.Empty End If Else e.Value = e.RowIndex End If End Sub Private Sub dataGridView1_CellValuePushed(ByVal sender As Object, _ ByVal e As DataGridViewCellValueEventArgs) _ Handles dataGridView1.CellValuePushed store.Add(e.RowIndex, CInt(e.Value)) End Sub #End Region Dim store As System.Collections.Generic.Dictionary(Of Integer, Integer) = _ New Dictionary(Of Integer, Integer)
bool newRowNeeded; private void dataGridView1_NewRowNeeded(object sender, DataGridViewRowEventArgs e) { newRowNeeded = true; } const int initialSize = 5000000; int numberOfRows = initialSize; private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { if (newRowNeeded) { newRowNeeded = false; numberOfRows = numberOfRows + 1; } } #region "data store maintance" const int initialValue = -1; private void 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 = store[e.RowIndex]; } else if (newRowNeeded && e.RowIndex == numberOfRows) { if (dataGridView1.IsCurrentCellInEditMode) { e.Value = initialValue; } else { // Show a blank value if the cursor is just resting // on the last row. e.Value = String.Empty; } } else { e.Value = e.RowIndex; } } private void dataGridView1_CellValuePushed(object sender, DataGridViewCellValueEventArgs e) { store.Add(e.RowIndex, int.Parse(e.Value.ToString())); } #endregion private Dictionary<int, int> store = new Dictionary<int, int>();
void VirtualConnector::dataGridView1_NewRowNeeded (Object^ sender, DataGridViewRowEventArgs^ e) { newRowNeeded = true; } void VirtualConnector::dataGridView1_RowsAdded (Object^ sender, DataGridViewRowsAddedEventArgs^ e) { if (newRowNeeded) { newRowNeeded = false; numberOfRows = numberOfRows + 1; } } #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->default[e->RowIndex]); } else if (newRowNeeded && e->RowIndex == numberOfRows) { if (dataGridView1->IsCurrentCellInEditMode) { e->Value = initialValue; } else { // Show a blank e if the cursor is just loitering // over(the) last row. e->Value = String::Empty; } } else { e->Value = e->RowIndex; } } void VirtualConnector::dataGridView1_CellValuePushed (Object^ sender, DataGridViewCellValueEventArgs^ e) { String^ value = e->Value->ToString(); store[e->RowIndex] = Int32::Parse(value, CultureInfo::CurrentCulture); } #pragma endregion
private boolean newRowNeeded; private void dataGridView1_NewRowNeeded(Object sender, DataGridViewRowEventArgs e) { newRowNeeded = true; } //dataGridView1_NewRowNeeded private final int INITIALSIZE = 5000000; private int numberOfRows = INITIALSIZE; private void dataGridView1_RowsAdded(Object sender, DataGridViewRowsAddedEventArgs e) { if (newRowNeeded) { newRowNeeded = false; numberOfRows = numberOfRows + 1; } } //dataGridView1_RowsAdded #region "data store maintance" private final int INITIALVALUE = -1; private void dataGridView1_CellValueNeeded(Object sender, DataGridViewCellValueEventArgs e) { if (store.ContainsKey(e.get_RowIndex())) { // Use the store if the e value has been modified // and stored. e.set_Value((Int32)store.get_Item(e.get_RowIndex())); } else { if (newRowNeeded && e.get_RowIndex() == numberOfRows) { if (dataGridView1.get_IsCurrentCellInEditMode()) { e.set_Value((Int32)INITIALVALUE); } else { // Show a blank e if the cursor is just loitering // over(the) // last row. e.set_Value(""); } } else { e.set_Value((Int32)e.get_RowIndex()); } } } //dataGridView1_CellValueNeeded private void dataGridView1_CellValuePushed(Object sender, DataGridViewCellValueEventArgs e) { store.Add(e.get_RowIndex(), Int32.Parse(e.get_Value().ToString())); } //dataGridView1_CellValuePushed #endregion private Dictionary<int, int> store = new Dictionary<int, int>();

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


DataGridView クラス
DataGridView メンバ
System.Windows.Forms 名前空間
その他の技術情報
DataGridView コントロール (Windows フォーム)
Weblioに収録されているすべての辞書からDataGridView.NewRowNeeded イベントを検索する場合は、下記のリンクをクリックしてください。

- DataGridView.NewRowNeeded イベントのページへのリンク