資訊
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

HOW TO:自訂 Windows Form DataGridView 控制項中的資料格式

更新:2007 年 11 月

下列程式碼範例示範如何實作 DataGridView.CellFormatting 事件的處理常式,此事件會依據資料行和值來變更顯示儲存格的方式。

包含負數的 Balance 資料行中的儲存格會顯示紅色背景。您也可以用貨幣形式格式化這些儲存格,在負數周圍顯示括號。如需詳細資訊,請參閱 HOW TO:格式化 Windows Form DataGridView 控制項中的資料

Priority 資料行中的儲存格會顯示影像,以代替對應的文字儲存格值。DataGridViewCellFormattingEventArgsValue 是用來取得文字儲存格值以及設定對應的影像顯示值。

using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : Form
{
    private DataGridView dataGridView1 = new DataGridView();
    private Bitmap highPriImage;
    private Bitmap mediumPriImage;
    private Bitmap lowPriImage;

    public Form1()
    {
        // Initialize the images. 
        try
        {
            highPriImage = new Bitmap("highPri.bmp");
            mediumPriImage = new Bitmap("mediumPri.bmp");
            lowPriImage = new Bitmap("lowPri.bmp");
        }
        catch (ArgumentException)
        {
            MessageBox.Show("The Priority column requires Bitmap images " +
                "named highPri.bmp, mediumPri.bmp, and lowPri.bmp " +
                "residing in the same directory as the executable file.");
        }

        // Initialize the DataGridView.
        dataGridView1.Dock = DockStyle.Fill;
        dataGridView1.AllowUserToAddRows = false;
        dataGridView1.Columns.AddRange(
            new DataGridViewTextBoxColumn(),
            new DataGridViewImageColumn());
        dataGridView1.Columns[0].Name = "Balance";
        dataGridView1.Columns[1].Name = "Priority";
        dataGridView1.Rows.Add("-100", "high");
        dataGridView1.Rows.Add("0", "medium");
        dataGridView1.Rows.Add("100", "low");
        dataGridView1.CellFormatting +=
            new System.Windows.Forms.DataGridViewCellFormattingEventHandler(
            this.dataGridView1_CellFormatting);
        this.Controls.Add(dataGridView1);
    }

    // Changes how cells are displayed depending on their columns and values.
    private void dataGridView1_CellFormatting(object sender, 
        System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
    {
        // Set the background to red for negative values in the Balance column.
        if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Balance"))
        {
            Int32 intValue;
            if (Int32.TryParse((String)e.Value, out intValue) && 
                (intValue < 0))
            {
                e.CellStyle.BackColor = Color.Red;
                e.CellStyle.SelectionBackColor = Color.DarkRed;
            }
        }

        // Replace string values in the Priority column with images.
        if (dataGridView1.Columns[e.ColumnIndex].Name.Equals("Priority"))
        {
            // Ensure that the value is a string.
            String stringValue = e.Value as string;
            if (stringValue == null) return;

            // Set the cell ToolTip to the text value.
            DataGridViewCell cell = dataGridView1[e.ColumnIndex, e.RowIndex];
            cell.ToolTipText = stringValue;

            // Replace the string value with the image value.
            switch (stringValue)
            {
                case "high":
                    e.Value = highPriImage;
                    break;
                case "medium":
                    e.Value = mediumPriImage;
                    break;
                case "low":
                    e.Value = lowPriImage;
                    break;
            }
        }
    }

    public static void Main()
    {
        Application.Run(new Form1());
    }

}


這項範例需要:

  • System、System.Drawing 和 System.Windows.Forms 組件的參考。

  • 名為 highPri.bmpmediumPri.bmplowPri.bmpBitmap 影像位於與可執行檔相同的目錄中。

如需從 Visual Basic 或 Visual C# 的命令列建置這個範例的詳細資訊,請參閱從命令列建置 (Visual Basic)使用 csc.exe 建置命令列。您也可以透過將程式碼貼入新的專案,在 Visual Studio 中建置此範例。HOW TO:使用 Visual Studio 編譯及執行完整的 Windows Form 程式碼範例
HOW TO:使用 Visual Studio 編譯及執行完整的 Windows Form 程式碼範例
HOW TO:使用 Visual Studio 編譯及執行完整的 Windows Form 程式碼範例
HOW TO:使用 Visual Studio 編譯及執行完整的 Windows Form 程式碼範例
如何:使用 Visual Studio 編譯及執行完整的 Windows Form 程式碼範例

社群新增項目

顯示:
© 2015 Microsoft