DataGridView.AutoGenerateColumns Özellik

Tanım

veya özellikleri ayarlandığında sütunların otomatik DataSource olarak oluşturulup oluşturulmadığını belirten bir değer alır veya DataMember ayarlar.

C#
[System.ComponentModel.Browsable(false)]
public bool AutoGenerateColumns { get; set; }

Özellik Değeri

true sütunların otomatik olarak oluşturulması gerekiyorsa; aksi takdirde , false. Varsayılan değer: true.

Öznitelikler

Örnekler

Aşağıdaki kod örneği, olarak ayarladığınızda AutoGenerateColumns sütunları el ile eklemeyi ve bir veri kaynağına bağlamayı falsegösterir. Bu örnekte, bir DataGridView denetim bir iş nesneleri listesine Task bağlıdır. Ardından, sütunlar eklenir ve özelliği aracılığıyla özelliklere TaskDataGridViewColumn.DataPropertyName bağlanır. Bu örnek, Nasıl yapılır: Windows Forms DataGridViewComboBoxCell Drop-Down Listesindeki Nesnelere Erişme başlığı altında sağlanan daha büyük bir örneğin parçasıdır.

C#
public class Form1 : Form
{
    private List<Employee> employees = new List<Employee>();
    private List<Task> tasks = new List<Task>();
    private Button reportButton = new Button();
    private DataGridView dataGridView1 = new DataGridView();

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

    public Form1()
    {
        dataGridView1.Dock = DockStyle.Fill;
        dataGridView1.AutoSizeColumnsMode = 
            DataGridViewAutoSizeColumnsMode.AllCells;
        reportButton.Text = "Generate Report";
        reportButton.Dock = DockStyle.Top;
        reportButton.Click += new EventHandler(reportButton_Click);

        Controls.Add(dataGridView1);
        Controls.Add(reportButton);
        Load += new EventHandler(Form1_Load);
        Text = "DataGridViewComboBoxColumn Demo";
    }

    // Initializes the data source and populates the DataGridView control.
    private void Form1_Load(object sender, EventArgs e)
    {
        PopulateLists();
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.DataSource = tasks;
        AddColumns();
    }

    // Populates the employees and tasks lists. 
    private void PopulateLists()
    {
        employees.Add(new Employee("Harry"));
        employees.Add(new Employee("Sally"));
        employees.Add(new Employee("Roy"));
        employees.Add(new Employee("Pris"));
        tasks.Add(new Task(1, employees[1]));
        tasks.Add(new Task(2));
        tasks.Add(new Task(3, employees[2]));
        tasks.Add(new Task(4));
    }

    // Configures columns for the DataGridView control.
    private void AddColumns()
    {
        DataGridViewTextBoxColumn idColumn = 
            new DataGridViewTextBoxColumn();
        idColumn.Name = "Task";
        idColumn.DataPropertyName = "Id";
        idColumn.ReadOnly = true;

        DataGridViewComboBoxColumn assignedToColumn = 
            new DataGridViewComboBoxColumn();

        // Populate the combo box drop-down list with Employee objects. 
        foreach (Employee e in employees) assignedToColumn.Items.Add(e);

        // Add "unassigned" to the drop-down list and display it for 
        // empty AssignedTo values or when the user presses CTRL+0. 
        assignedToColumn.Items.Add("unassigned");
        assignedToColumn.DefaultCellStyle.NullValue = "unassigned";

        assignedToColumn.Name = "Assigned To";
        assignedToColumn.DataPropertyName = "AssignedTo";
        assignedToColumn.AutoComplete = true;
        assignedToColumn.DisplayMember = "Name";
        assignedToColumn.ValueMember = "Self";

        // Add a button column. 
        DataGridViewButtonColumn buttonColumn = 
            new DataGridViewButtonColumn();
        buttonColumn.HeaderText = "";
        buttonColumn.Name = "Status Request";
        buttonColumn.Text = "Request Status";
        buttonColumn.UseColumnTextForButtonValue = true;

        dataGridView1.Columns.Add(idColumn);
        dataGridView1.Columns.Add(assignedToColumn);
        dataGridView1.Columns.Add(buttonColumn);

        // Add a CellClick handler to handle clicks in the button column.
        dataGridView1.CellClick +=
            new DataGridViewCellEventHandler(dataGridView1_CellClick);
    }

    // Reports on task assignments. 
    private void reportButton_Click(object sender, EventArgs e)
    {
        StringBuilder report = new StringBuilder();
        foreach (Task t in tasks)
        {
            String assignment = 
                t.AssignedTo == null ? 
                "unassigned" : "assigned to " + t.AssignedTo.Name;
            report.AppendFormat("Task {0} is {1}.", t.Id, assignment);
            report.Append(Environment.NewLine);
        }
        MessageBox.Show(report.ToString(), "Task Assignments");
    }

    // Calls the Employee.RequestStatus method.
    void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        // Ignore clicks that are not on button cells. 
        if (e.RowIndex < 0 || e.ColumnIndex !=
            dataGridView1.Columns["Status Request"].Index) return;

        // Retrieve the task ID.
        Int32 taskID = (Int32)dataGridView1[0, e.RowIndex].Value;

        // Retrieve the Employee object from the "Assigned To" cell.
        Employee assignedTo = dataGridView1.Rows[e.RowIndex]
            .Cells["Assigned To"].Value as Employee;

        // Request status through the Employee object if present. 
        if (assignedTo != null)
        {
            assignedTo.RequestStatus(taskID);
        }
        else
        {
            MessageBox.Show(String.Format(
                "Task {0} is unassigned.", taskID), "Status Request");
        }
    }
}

Açıklamalar

Bu özellik olarak ayarlandığında ve DataSource veya DataMember özellikleri ayarlandığında true veya değiştirildiğinde sütunlar otomatik olarak oluşturulur. Özelliği olarak falsetruedeğiştirildiğinde AutoGenerateColumns de sütunlar otomatik olarak oluşturulabilir. Bu özellik ise true ve önceki DataSource değerin DataSource sütunlarıyla eşleşmeyen sütunlar bulunduğunda değişirse, eşleşmeyen sütunlardaki veriler atılır. veya DataMember özellikleri ayarlanmadıysa DataSource bu özellik yoksayılır.

AutoGenerateColumns olarak ayarlandığındatrue, denetim veri kaynağındaki DataGridView nesnelerin her ortak özelliği için bir sütun oluşturur. Bağlı nesneler arabirimini uygularsa ICustomTypeDescriptor , denetim yöntemi tarafından GetProperties döndürülen her özellik için bir sütun oluşturur. Her sütun başlığı, sütunun temsil edeceği özellik adının değerini içerir.

Özelliğini ayarladıysanız DataSource ancak olarak falseayarladıysanız AutoGenerateColumns sütunları el ile eklemeniz gerekir. Özelliği, ilişkili nesneler tarafından kullanıma sunulan bir özelliğin adına ayarlayarak DataGridViewColumn.DataPropertyName eklenen her sütunu veri kaynağına bağlayabilirsiniz.

Not

DataSource Windows Forms Tasarımcısı'nda ayarının ayarlanması özelliği otomatik olarak olarak false olarak ayarlar ve veri kaynağındaki AutoGenerateColumns her özellik için bir sütun ekleyip bağlamak üzere kod oluşturur. Tasarım zamanında oluşturulan kod, aşağıdaki örnekte gösterilen el ile eklenen kodla eşdeğerdir. Özelliği olarak ayarlandığında trueoluşan çalışma zamanında sütunların otomatik olarak oluşturulmasıyla AutoGenerateColumns aynı değildir.

Şunlara uygulanır

Ürün Sürümler
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Ayrıca bkz.