BindingSource.AllowNew Propiedad

Definición

Obtiene o establece un valor que indica si el método AddNew() se puede utilizar para agregar elementos a la lista.

public:
 virtual property bool AllowNew { bool get(); void set(bool value); };
public virtual bool AllowNew { get; set; }
member this.AllowNew : bool with get, set
Public Overridable Property AllowNew As Boolean

Valor de propiedad

true si se puede utilizar AddNew() para agregar elementos a la lista; en caso contrario, devuelve false.

Excepciones

Esta propiedad se establece en true cuando la lista subyacente representada por la propiedad List tiene un tamaño fijo o es de sólo lectura.

La propiedad se establece en true y no se controla el evento AddingNew cuando el tipo de lista subyacente no tiene ningún constructor sin parámetros.

Ejemplos

En el ejemplo de código siguiente se muestra el uso de la AllowNew propiedad del BindingSource componente para permitir al usuario agregar nuevos elementos a la BindingSource lista subyacente del componente. Establecer esta propiedad en true hace que el control enlazado DataGridView muestre su fila para los nuevos registros.

Form1()
{
   // Set up the form.
   this->Size = System::Drawing::Size( 800, 800 );
   this->Load += gcnew EventHandler( this, &Form1::Form1_Load );
   
   // Set up the RadioButton controls.
   this->allRadioBtn->Text = L"All";
   this->allRadioBtn->Checked = true;
   this->allRadioBtn->CheckedChanged += gcnew EventHandler(
      this, &Form1::allRadioBtn_CheckedChanged );
   this->allRadioBtn->Dock = DockStyle::Top;
   this->currentRadioBtn->Text = L"Current";
   this->currentRadioBtn->CheckedChanged += gcnew EventHandler(
      this, &Form1::currentRadioBtn_CheckedChanged );
   this->currentRadioBtn->Dock = DockStyle::Top;
   this->noneRadioBtn->Text = L"None";
   this->noneRadioBtn->CheckedChanged += gcnew EventHandler(
      this, &Form1::noneRadioBtn_CheckedChanged );
   this->noneRadioBtn->Dock = DockStyle::Top;
   this->buttonPanel->Controls->Add( this->allRadioBtn );
   this->buttonPanel->Controls->Add( this->currentRadioBtn );
   this->buttonPanel->Controls->Add( this->noneRadioBtn );
   this->buttonPanel->Dock = DockStyle::Bottom;
   this->Controls->Add( this->buttonPanel );
   
   // Set up the DataGridView control.
   this->customersDataGridView->AllowUserToAddRows = true;
   this->customersDataGridView->Dock = DockStyle::Fill;
   this->Controls->Add( customersDataGridView );
   
   // Add the StatusBar control to the form.
   this->Controls->Add( status );
   
   // Allow the user to add new items.
   this->customersBindingSource->AllowNew = true;
   
   // Attach an event handler for the AddingNew event.
   this->customersBindingSource->AddingNew +=
      gcnew AddingNewEventHandler(
         this, &Form1::customersBindingSource_AddingNew );
   
   // Attach an eventhandler for the ListChanged event.
   this->customersBindingSource->ListChanged +=
      gcnew ListChangedEventHandler(
         this, &Form1::customersBindingSource_ListChanged );
   
   // Set the initial value of the ItemChangedEventMode property
   // to report all ListChanged events.
   this->customersBindingSource->ItemChangedEventMode = 
     ItemChangedEventMode::All;
   
   // Attach the BindingSource to the DataGridView.
   this->customersDataGridView->DataSource =
      this->customersBindingSource;
}
public Form1()
{
    // Set up the form.
    this.Size = new Size(800, 800);
    this.Load += new EventHandler(Form1_Load);

    // Set up the DataGridView control.
    this.customersDataGridView.AllowUserToAddRows = true;
    this.customersDataGridView.Dock = DockStyle.Fill;
    this.Controls.Add(customersDataGridView);

    // Add the StatusBar control to the form.
    this.Controls.Add(status);

    // Allow the user to add new items.
    this.customersBindingSource.AllowNew = true;

    // Attach an event handler for the AddingNew event.
    this.customersBindingSource.AddingNew +=
        new AddingNewEventHandler(customersBindingSource_AddingNew);

    // Attach an eventhandler for the ListChanged event.
    this.customersBindingSource.ListChanged +=
        new ListChangedEventHandler(customersBindingSource_ListChanged);

    // Attach the BindingSource to the DataGridView.
    this.customersDataGridView.DataSource =
        this.customersBindingSource;
}
Public Sub New() 
    ' Set up the form.
    Me.Size = New Size(800, 800)
    AddHandler Me.Load, AddressOf Form1_Load
    
    ' Set up the DataGridView control.
    Me.customersDataGridView.AllowUserToAddRows = True
    Me.customersDataGridView.Dock = DockStyle.Fill
    Me.Controls.Add(customersDataGridView)
    
    ' Add the StatusBar control to the form.
    Me.Controls.Add(status)
    
    ' Allow the user to add new items.
    Me.customersBindingSource.AllowNew = True
    
    ' Attach the BindingSource to the DataGridView.
    Me.customersDataGridView.DataSource = Me.customersBindingSource

End Sub

Comentarios

El valor predeterminado de la AllowNew propiedad depende del tipo de origen de datos subyacente. Si la lista subyacente implementa la IBindingList interfaz , esta propiedad delegará en la lista subyacente. De lo contrario, esta propiedad devolverá false si la lista subyacente tiene alguna de las siguientes características:

  • Tiene un tamaño fijo, según lo determinado por la IList.IsFixedSize propiedad .

  • Es de solo lectura, según lo determinado por la IList.IsReadOnly propiedad .

  • El tipo del elemento no tiene un constructor sin parámetros.

Nota

Una vez establecido el valor de esta propiedad, el captador ya no hace referencia a la llamada a la lista subyacente. En su lugar, simplemente devuelve el valor que se estableció anteriormente hasta que se llama al ResetAllowNew método .

Al establecer esta propiedad, se genera el ListChanged evento con ListChangedEventArgs.ListChangedType establecido en ListChangedType.Reset.

Si establece la AllowNew propiedad true en y el tipo de lista subyacente no tiene un constructor sin parámetros, debe controlar el AddingNew evento y crear el tipo adecuado.

Se aplica a

Consulte también