BindingSource::AllowNew Property


Gets or sets a value indicating whether the AddNew method can be used to add items to the list.

Namespace:   System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

property bool AllowNew {
	virtual bool get();
	virtual void set(bool value);

Property Value

Type: System::Boolean

true if AddNew can be used to add items to the list; otherwise, false.

Exception Condition

This property is set to true when the underlying list represented by the List property has a fixed size or is read-only.


The property is set to true and the AddingNew event is not handled when the underlying list type does not have a default constructor.

The default value for the AllowNew property depends on the underlying data source type. If the underlying list implements the IBindingList interface, this property will delegate to the underlying list. Otherwise, this property will return false if the underlying list has any of the following characteristics:

  • It has a fixed size, as determined by the IList::IsFixedSize property.

  • It is read-only, as determined by the IList::IsReadOnly property.

  • The item's type does not have a default constructor.


Once the value of this property is set, the getter no longer refers the call to the underlying list. Instead, it simply returns the value that was previously set until the ResetAllowNew method is called.

Setting this property raises the ListChanged event with ListChangedEventArgs::ListChangedType set to ListChangedType::Reset.

If you set the AllowNew property to true and the underlying list type does not have a default constructor, you must handle the AddingNew event and create the appropriate type.

The following code example demonstrates using the AllowNew property of the BindingSource component to permit the user to add new items to the BindingSource component's underlying list. Setting this property to true causes the bound DataGridView control to display its row for new records.

   // 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 = 

   // Attach the BindingSource to the DataGridView.
   this->customersDataGridView->DataSource =

.NET Framework
Available since 2.0
Return to top