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

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

このイベントを仮想モードで使用して、行が非共有にならない状態で、セルにカスタム データ ストアからのデータを格納します。行の共有の詳細については、「Windows フォーム DataGridView コントロールを拡張するための推奨される手順」を参照してください。仮想モードの詳細については、「Windows フォーム DataGridView コントロールでの仮想モード」を参照してください。

CellValueNeeded イベントを処理して、セルに正の整数を格納するコード例を次に示します。この例は VirtualMode のリファレンス トピックで取り上げている例の一部分です。
#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)
#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>();
#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
#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.VirtualMode プロパティ
DataGridViewCellValueEventHandler
DataGridViewCellValueEventArgs
CellValuePushed
OnCellValueNeeded
その他の技術情報
Windows フォーム DataGridView コントロールを拡張するための推奨される手順
Windows フォーム DataGridView コントロールでの仮想モード
DataGridView コントロール (Windows フォーム)
Weblioに収録されているすべての辞書からDataGridView.CellValueNeeded イベントを検索する場合は、下記のリンクをクリックしてください。

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