Condividi tramite


BindingSource.AllowNew Proprietà

Definizione

Ottiene o imposta un valore che indica se il metodo AddNew() può essere utilizzato per aggiungere elementi all'elenco.

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

Valore della proprietà

true se il metodo AddNew() può essere utilizzato per aggiungere elementi all'elenco; in caso contrario, false.

Eccezioni

Questa proprietà è impostata su true quando l'elenco sottostante rappresentato dalla proprietà List ha una dimensione fissa oppure è in sola lettura.

Quando il tipo di elenco sottostante non ha un costruttore senza parametri, la proprietà viene impostata su true e l'evento AddingNew non viene gestito.

Esempio

Nell'esempio di codice seguente viene illustrata l'uso AllowNew della proprietà del BindingSource componente per consentire all'utente di aggiungere nuovi elementi all'elenco BindingSource sottostante del componente. Impostando questa proprietà per true causare la visualizzazione della riga del controllo associato DataGridView per i nuovi record.

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

Commenti

Il valore predefinito per la AllowNew proprietà dipende dal tipo di origine dati sottostante. Se l'elenco sottostante implementa l'interfaccia, questa proprietà delega all'elenco IBindingList sottostante. In caso contrario, questa proprietà restituirà false se l'elenco sottostante ha una delle caratteristiche seguenti:

  • Ha una dimensione fissa, come determinato dalla IList.IsFixedSize proprietà.

  • È di sola lettura, come determinato dalla IList.IsReadOnly proprietà.

  • Il tipo dell'elemento non ha un costruttore senza parametri.

Nota

Dopo aver impostato il valore di questa proprietà, il getter non fa più riferimento alla chiamata all'elenco sottostante. Restituisce invece semplicemente il valore precedentemente impostato finché non viene chiamato il ResetAllowNew metodo.

L'impostazione di questa proprietà genera l'evento ListChanged con ListChangedEventArgs.ListChangedType impostato su ListChangedType.Reset.

Se si imposta la AllowNew proprietà su true e il tipo di elenco sottostante non dispone di un costruttore senza parametri, è necessario gestire l'evento AddingNew e creare il tipo appropriato.

Si applica a

Vedi anche