相关文章推荐
坚韧的南瓜  ·  Prometheus ...·  1 年前    · 
小胡子的大葱  ·  ERROR: database ...·  3 年前    · 
千杯不醉的上铺  ·  python colorbar位置 ...·  3 年前    · 
气宇轩昂的眼镜  ·  :nth-last-child | ...·  3 年前    · 
public ref class DataGridViewComboBoxCell : System::Windows::Forms::DataGridViewCell
public class DataGridViewComboBoxCell : System.Windows.Forms.DataGridViewCell
type DataGridViewComboBoxCell = class
    inherit DataGridViewCell
Public Class DataGridViewComboBoxCell
Inherits DataGridViewCell
DataGridViewComboBoxCell

下列程式碼範例示範 DataGridViewComboBoxColumn 類別,該類別會利用 類別 DataGridViewComboBoxCell 。 您可以使用與本範例中設定對應資料行屬性相同的方式來設定儲存格 DataSource ValueMember DisplayMember 屬性。 這個範例是類別概觀主題中較大範例的 DataGridViewComboBoxColumn 一部分。

private: DataGridViewComboBoxColumn^ CreateComboBoxColumn() DataGridViewComboBoxColumn^ column = gcnew DataGridViewComboBoxColumn(); column->DataPropertyName = ColumnName::TitleOfCourtesy.ToString(); column->HeaderText = ColumnName::TitleOfCourtesy.ToString(); column->DropDownWidth = 160; column->Width = 90; column->MaxDropDownItems = 3; column->FlatStyle = FlatStyle::Flat; return column; private: void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn^ comboboxColumn) comboboxColumn->DataSource = RetrieveAlternativeTitles(); comboboxColumn->ValueMember = ColumnName::TitleOfCourtesy.ToString(); comboboxColumn->DisplayMember = comboboxColumn->ValueMember; private: DataTable^ RetrieveAlternativeTitles() return Populate("SELECT distinct TitleOfCourtesy FROM Employees"); String^ connectionString; private: DataTable^ Populate(String^ sqlCommand) SqlConnection^ northwindConnection = gcnew SqlConnection(connectionString); northwindConnection->Open(); SqlCommand^ command = gcnew SqlCommand(sqlCommand, northwindConnection); SqlDataAdapter^ adapter = gcnew SqlDataAdapter(); adapter->SelectCommand = command; DataTable^ table = gcnew DataTable(); adapter->Fill(table); return table; // Using an enum provides some abstraction between column index // and column name along with compile time checking, and gives // a handy place to store the column names. enum class ColumnName EmployeeID, LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath, OutOfOffice private DataGridViewComboBoxColumn CreateComboBoxColumn() DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn(); column.DataPropertyName = ColumnName.TitleOfCourtesy.ToString(); column.HeaderText = ColumnName.TitleOfCourtesy.ToString(); column.DropDownWidth = 160; column.Width = 90; column.MaxDropDownItems = 3; column.FlatStyle = FlatStyle.Flat; return column; private void SetAlternateChoicesUsingDataSource(DataGridViewComboBoxColumn comboboxColumn) comboboxColumn.DataSource = RetrieveAlternativeTitles(); comboboxColumn.ValueMember = ColumnName.TitleOfCourtesy.ToString(); comboboxColumn.DisplayMember = comboboxColumn.ValueMember; private DataTable RetrieveAlternativeTitles() return Populate("SELECT distinct TitleOfCourtesy FROM Employees"); string connectionString = "Integrated Security=SSPI;Persist Security Info=False;" + "Initial Catalog=Northwind;Data Source=localhost"; private DataTable Populate(string sqlCommand) SqlConnection northwindConnection = new SqlConnection(connectionString); northwindConnection.Open(); SqlCommand command = new SqlCommand(sqlCommand, northwindConnection); SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = command; DataTable table = new DataTable(); table.Locale = System.Globalization.CultureInfo.InvariantCulture; adapter.Fill(table); return table; // Using an enum provides some abstraction between column index // and column name along with compile time checking, and gives // a handy place to store the column names. enum ColumnName EmployeeId, LastName, FirstName, Title, TitleOfCourtesy, BirthDate, HireDate, Address, City, Region, PostalCode, Country, HomePhone, Extension, Photo, Notes, ReportsTo, PhotoPath, OutOfOffice Private Function CreateComboBoxColumn() _ As DataGridViewComboBoxColumn Dim column As New DataGridViewComboBoxColumn() With column .DataPropertyName = ColumnName.TitleOfCourtesy.ToString() .HeaderText = ColumnName.TitleOfCourtesy.ToString() .DropDownWidth = 160 .Width = 90 .MaxDropDownItems = 3 .FlatStyle = FlatStyle.Flat End With Return column End Function Private Sub SetAlternateChoicesUsingDataSource( _ ByVal comboboxColumn As DataGridViewComboBoxColumn) With comboboxColumn .DataSource = RetrieveAlternativeTitles() .ValueMember = ColumnName.TitleOfCourtesy.ToString() .DisplayMember = .ValueMember End With End Sub Private Function RetrieveAlternativeTitles() As DataTable Return Populate( _ "SELECT distinct TitleOfCourtesy FROM Employees") End Function Private connectionString As String = _ "Integrated Security=SSPI;Persist Security Info=False;" _ & "Initial Catalog=Northwind;Data Source=localhost" Private Function Populate(ByVal sqlCommand As String) As DataTable Dim northwindConnection As New SqlConnection(connectionString) northwindConnection.Open() Dim command As New SqlCommand(sqlCommand, _ northwindConnection) Dim adapter As New SqlDataAdapter() adapter.SelectCommand = command Dim table As New DataTable() table.Locale = System.Globalization.CultureInfo.InvariantCulture adapter.Fill(table) Return table End Function ' Using an enum provides some abstraction between column index ' and column name along with compile time checking, and gives ' a handy place to store the column names. Enum ColumnName EmployeeId LastName FirstName Title TitleOfCourtesy BirthDate HireDate Address Region PostalCode Country HomePhone Extension Photo Notes ReportsTo PhotoPath OutOfOffice End Enum

類別 DataGridViewComboBoxCell 是用來顯示下拉式方塊控制項的特殊類型 DataGridViewCell ,這是與清單選取欄位結合的編輯欄位。 目前選取 DataGridViewComboBoxCell 的 會裝載 , DataGridViewComboBoxEditingControl 其中使用者可以變更儲存格的值,假設儲存格的 ReadOnly 屬性設定為 false

ComboBox 不同于 控制項, DataGridViewComboBoxCell 沒有 SelectedIndex SelectedValue 屬性。 相反地,從下拉式清單中選取值會設定儲存格 Value 屬性。

DataGridViewComboBoxColumn 是特製化用來保存此類型儲存格的資料行類型。 根據預設,會將 DataGridViewComboBoxColumn.CellTemplate 初始化為新的 DataGridViewComboBoxCell 。 若要在現有 DataGridViewComboBoxCell 之後建立資料行內儲存格的圖樣,請將資料行的 CellTemplate 屬性設定為要當做圖樣使用的儲存格。

資料行的儲存格相關屬性是樣板儲存格之類似名稱屬性的包裝函式。 變更範本儲存格的屬性值只會根據變更之後新增的範本,影響儲存格。 不過,變更資料行的儲存格相關屬性值將會更新範本儲存格和資料行中的所有其他儲存格,並視需要重新整理資料行顯示。

除非您想要覆寫特定儲存格的資料行值, DataGridViewComboBoxColumn 否則您通常會使用 類型。 填入下拉式清單之類別概觀主題中所述 DataGridViewComboBoxColumn 的指導方針適用于資料格和資料行實例。

給繼承者的注意事項

當您衍生自 DataGridViewComboBoxCell 並將新屬性新增至衍生類別時,請務必覆寫 Clone() 方法,以在複製作業期間複製新屬性。 您也應該呼叫基類的 Clone() 方法,以便基類的屬性複製到新的儲存格。

Paint(Graphics, Rectangle, Rectangle, Int32, DataGridViewElementStates, Object, Object, String, DataGridViewCellStyle, DataGridViewAdvancedBorderStyle, DataGridViewPaintParts)

繪製目前的 DataGridViewComboBoxCell