Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
0 von 1 fanden dies hilfreich - Dieses Thema bewerten.

DataGridView.AutoGenerateColumns-Eigenschaft

Ruft einen Wert ab oder legt einen Wert fest, der angibt, ob Spalten automatisch erstellt werden, wenn die DataSource-Eigenschaft oder die DataMember-Eigenschaft festgelegt werden.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
[BrowsableAttribute(false)]
public bool AutoGenerateColumns { get; set; }

Eigenschaftswert

Typ: System.Boolean
true, wenn die Spalten automatisch erstellt werden sollen, andernfalls false. Die Standardeinstellung ist true.

Spalten werden automatisch generiert, wenn diese Eigenschaft auf true ist festgelegt ist und die DataSource-Eigenschaft oder die DataMember-Eigenschaft festgelegt sind oder geändert werden. Spalten können auch automatisch generiert werden, wenn die AutoGenerateColumns-Eigenschaft von false in true geändert wird. Wenn diese Eigenschaft true ist und sich die DataSource so ändert, dass Spalten nicht mit den Spalten des vorherigen DataSource-Werts übereinstimmen, werden die Daten in den nicht übereinstimmenden Spalten verworfen. Diese Eigenschaft wird ignoriert, wenn die DataSource-Eigenschaft oder die DataMember-Eigenschaft nicht festgelegt sind.

Wenn AutoGenerateColumns auf true festgelegt ist, generiert das DataGridView-Steuerelement eine Spalte für jede öffentliche Eigenschaft der Objekte in der Datenquelle. Wenn die gebundenen Objekte die ICustomTypeDescriptor-Schnittstelle implementieren, generiert das Steuerelement eine Spalte für jede Eigenschaft, die von der GetProperties-Methode zurückgegeben wird. Jeder Spaltenheader enthält den Wert des Eigenschaftennamens, den die Spalte darstellt.

Wenn Sie die DataSource-Eigenschaft festlegen und AutoGenerateColumns auf false festgelegt haben, müssen Sie die Spalten manuell hinzufügen. Sie können jede hinzugefügte Spalte an die Datenquelle binden, indem Sie die DataGridViewColumn.DataPropertyName-Eigenschaft auf den Namen einer Eigenschaft festlegen, die von den gebundenen Objekten verfügbar gemacht wird.

Hinweis Hinweis

Durch das Festlegen von DataSource im Windows Forms-Designer wird die AutoGenerateColumns-Eigenschaft automatisch auf false festgelegt und Code generiert, um eine Spalte für jede Eigenschaft in der Datenquelle hinzuzufügen und zu binden. Der Code, der zur Entwurfszeit generiert wird, entspricht dem im folgenden Beispiel gezeigten manuell hinzugefügten Code. Dies ist nicht das Gleiche wie die automatische Generierung von Spalten zur Laufzeit, die auftritt, wenn die AutoGenerateColumns-Eigenschaft auf true festgelegt wird.

Das folgende Codebeispiel veranschaulicht, wie manuell Spalten hinzugefügt und an eine Datenquelle gebunden werden, wenn AutoGenerateColumns auf false festgelegt wurde. In diesem Beispiel wird ein DataGridView-Steuerelement an eine Liste von Task-Geschäftsobjekten gebunden. Anschließend werden Spalten hinzugefügt und über die DataGridViewColumn.DataPropertyName-Eigenschaft an Task-Eigenschaften gebunden. Dieses Beispiel ist Teil eines umfangreicheren Beispiels in Gewusst wie: Zugreifen auf Objekte in einer Windows Forms-DataGridViewComboBoxCell-Dropdownliste.


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");
        }
    }

}


.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ