DataGridView.VirtualMode プロパティとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > DataGridView.VirtualMode プロパティの意味・解説 

DataGridView.VirtualMode プロパティ

メモ : このプロパティは、.NET Framework version 2.0 で新しく追加されたものです。

DataGridView コントロールに対して独自のデータ管理操作を指定したかどうかを示す値を取得または設定します。

名前空間: System.Windows.Forms
アセンブリ: System.Windows.Forms (system.windows.forms.dll 内)
構文構文

Dim instance As DataGridView
Dim value As Boolean

value = instance.VirtualMode

instance.VirtualMode = value
public bool VirtualMode { get;
 set; }
public:
property bool VirtualMode {
    bool get ();
    void set (bool value);
}
/** @property */
public boolean get_VirtualMode ()

/** @property */
public void set_VirtualMode (boolean value)

プロパティ値
DataGridView が指定されたデータ管理操作を使用する場合は true。それ以外の場合は false。既定値は false です。

解説解説
使用例使用例

仮想モードを使用して、正の整数の表を作成するコード例を次に示します。

Imports System.IO
Imports System.Collections.Generic
Imports System.Windows.Forms

Public Class VirtualModeDemo
    Inherits System.Windows.Forms.Form

    Dim WithEvents dataGridView1 As
 New DataGridView

    Public Sub New()

        MyBase.New()

        Text = "DataGridView virtual-mode demo (cell-level commit
 scope)"

        Controls.Add(dataGridView1)
        dataGridView1.VirtualMode = True
        dataGridView1.AllowUserToDeleteRows = False
        dataGridView1.Columns.Add("Numbers", "Positive
 Numbers")
        dataGridView1.Rows.AddCopies(0, initialSize)

    End Sub

    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)

    Private Sub dataGridView1_CellValidating(ByVal
 sender As Object, _
        ByVal e _
        As DataGridViewCellValidatingEventArgs) _
        Handles dataGridView1.CellValidating

        Me.dataGridView1.Rows(e.RowIndex).ErrorText = ""
        Dim newInteger As Integer

        ' Don't try to validate the 'new row' until finished 
        ' editing since there
        ' is not any point in validating its initial value.
        If dataGridView1.Rows(e.RowIndex).IsNewRow Then
 Return
        If Not Integer.TryParse(e.FormattedValue.ToString(),
 newInteger) _
            OrElse newInteger < 0 Then

            e.Cancel = True
            Me.dataGridView1.Rows(e.RowIndex).ErrorText = "the
 value must be a non-negative integer"

        End If
    End Sub

    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.Run(New VirtualModeDemo())
    End Sub
End Class
using System.IO;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Drawing;
using System;

public class VirtualModeDemo : Form
{
    DataGridView dataGridView1 = new DataGridView();

    public VirtualModeDemo()
        : base()
    {
        Text = "DataGridView virtual-mode demo (cell-level commit scope)";
        dataGridView1.NewRowNeeded +=
            new DataGridViewRowEventHandler(dataGridView1_NewRowNeeded);
        dataGridView1.RowsAdded +=
            new DataGridViewRowsAddedEventHandler(dataGridView1_RowsAdded);
        dataGridView1.CellValidating +=
            new DataGridViewCellValidatingEventHandler(dataGridView1_CellValidating);
        dataGridView1.CellValueNeeded +=
            new DataGridViewCellValueEventHandler(dataGridView1_CellValueNeeded);
        dataGridView1.CellValuePushed +=
            new DataGridViewCellValueEventHandler(dataGridView1_CellValuePushed);

        Controls.Add(dataGridView1);
        dataGridView1.VirtualMode = true;
        dataGridView1.AllowUserToDeleteRows = false;
        dataGridView1.Columns.Add("Numbers", "Positive Numbers");
        dataGridView1.Rows.AddCopies(0, initialSize);
    }

    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>();

    private void dataGridView1_CellValidating(object
 sender,
        DataGridViewCellValidatingEventArgs e)
    {
        dataGridView1.Rows[e.RowIndex].ErrorText = "";
        int newInteger;

        // Don't try to validate the 'new row' until finished 
        // editing since there
        // is not any point in validating its initial value.
        if (dataGridView1.Rows[e.RowIndex].IsNewRow) { return;
 }
        if (!int.TryParse(e.FormattedValue.ToString()
,
            out newInteger) || newInteger < 0)
        {
            e.Cancel = true;
            dataGridView1.Rows[e.RowIndex].ErrorText = "the value must be a
 non-negative integer";
        }
    }

    [STAThreadAttribute()]
    public static void Main()
    {
        Application.Run(new VirtualModeDemo());
    }
}
import System.IO.*;
import System.Collections.Generic.*;
import System.Windows.Forms.*;
import System.Drawing.*;
import System.*;

public class Virtual extends Form
{
    private DataGridView dataGridView1 = new
 DataGridView();

    public Virtual()
    {
        set_Text(this.GetType().get_Name());
        dataGridView1.add_NewRowNeeded(new DataGridViewRowEventHandler(
            dataGridView1_NewRowNeeded));
        dataGridView1.add_RowsAdded(new DataGridViewRowsAddedEventHandler(
            dataGridView1_RowsAdded));
        dataGridView1.add_CellValidating(
            new DataGridViewCellValidatingEventHandler(
            dataGridView1_CellValidating));
        dataGridView1.add_CellValueNeeded(
            new DataGridViewCellValueEventHandler(
            dataGridView1_CellValueNeeded));
        dataGridView1.add_CellValuePushed(
            new DataGridViewCellValueEventHandler(
            dataGridView1_CellValuePushed));

        try {
            get_Controls().Add(dataGridView1);
            dataGridView1.set_VirtualMode(true);
            dataGridView1.set_AllowUserToDeleteRows(false);
            dataGridView1.get_Columns().Add("Numbers", "Positive Numbers");
            dataGridView1.get_Rows().AddCopies(0, INITIALSIZE);
        }
        catch (System.Exception ex) {
            MessageBox.Show("Exception occured: " + ex.ToString());
        }
    } //Virtual

    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>();

    private void dataGridView1_CellValidating(Object
 sender,
        DataGridViewCellValidatingEventArgs e)
    {
        int newInteger = 0;
        // Don't try to validate the 'new row' until finished 
        // editing since there
        // is not any point in validating its initial value.
        if (dataGridView1.get_Rows().get_Item(
            e.get_RowIndex()).get_IsNewRow()) {
            return;
        }
        if (!(Int32.TryParse(e.get_FormattedValue().ToString(),
 newInteger)) 
            || newInteger < 0) {
            e.set_Cancel(true);
        }
    } //dataGridView1_CellValidating

    public static void main(String[]
 args)
    {
        Application.Run(new Virtual());
    } //main
} //Virtual
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「DataGridView.VirtualMode プロパティ」の関連用語

DataGridView.VirtualMode プロパティのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



DataGridView.VirtualMode プロパティのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS