User get getting "bindingsource cannot be its own data source" error. Can't repro locally. Adding SyncBindingSource for datagrid views to attempt to solve it
This commit is contained in:
parent
4fd16f04e0
commit
613c97524a
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
<Version>6.0.4.1</Version>
|
<Version>6.0.5.1</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -38,7 +38,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
this.authorsDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.authorsDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.miscDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.miscDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.purchaseDateGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.purchaseDateGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.gridEntryBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
this.gridEntryBindingSource = new LibationWinForms.SyncBindingSource(this.components);
|
||||||
this.btnRemoveBooks = new System.Windows.Forms.Button();
|
this.btnRemoveBooks = new System.Windows.Forms.Button();
|
||||||
this.label1 = new System.Windows.Forms.Label();
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
((System.ComponentModel.ISupportInitialize)(this._dataGridView)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this._dataGridView)).BeginInit();
|
||||||
@ -176,7 +176,7 @@ namespace LibationWinForms.Dialogs
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.DataGridView _dataGridView;
|
private System.Windows.Forms.DataGridView _dataGridView;
|
||||||
private System.Windows.Forms.BindingSource gridEntryBindingSource;
|
private LibationWinForms.SyncBindingSource gridEntryBindingSource;
|
||||||
private System.Windows.Forms.Button btnRemoveBooks;
|
private System.Windows.Forms.Button btnRemoveBooks;
|
||||||
private System.Windows.Forms.Label label1;
|
private System.Windows.Forms.Label label1;
|
||||||
private System.Windows.Forms.DataGridViewCheckBoxColumn removeDataGridViewCheckBoxColumn;
|
private System.Windows.Forms.DataGridViewCheckBoxColumn removeDataGridViewCheckBoxColumn;
|
||||||
|
|||||||
4
LibationWinForms/ProductsGrid.Designer.cs
generated
4
LibationWinForms/ProductsGrid.Designer.cs
generated
@ -30,7 +30,7 @@
|
|||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||||
this.gridEntryBindingSource = new System.Windows.Forms.BindingSource(this.components);
|
this.gridEntryBindingSource = new LibationWinForms.SyncBindingSource(this.components);
|
||||||
this.gridEntryDataGridView = new System.Windows.Forms.DataGridView();
|
this.gridEntryDataGridView = new System.Windows.Forms.DataGridView();
|
||||||
this.dataGridViewImageButtonBoxColumn1 = new LibationWinForms.LiberateDataGridViewImageButtonColumn();
|
this.dataGridViewImageButtonBoxColumn1 = new LibationWinForms.LiberateDataGridViewImageButtonColumn();
|
||||||
this.dataGridViewImageColumn1 = new System.Windows.Forms.DataGridViewImageColumn();
|
this.dataGridViewImageColumn1 = new System.Windows.Forms.DataGridViewImageColumn();
|
||||||
@ -222,7 +222,7 @@
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.BindingSource gridEntryBindingSource;
|
private LibationWinForms.SyncBindingSource gridEntryBindingSource;
|
||||||
private System.Windows.Forms.DataGridView gridEntryDataGridView;
|
private System.Windows.Forms.DataGridView gridEntryDataGridView;
|
||||||
private LiberateDataGridViewImageButtonColumn dataGridViewImageButtonBoxColumn1;
|
private LiberateDataGridViewImageButtonColumn dataGridViewImageButtonBoxColumn1;
|
||||||
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;
|
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;
|
||||||
|
|||||||
28
LibationWinForms/SyncBindingSource.cs
Normal file
28
LibationWinForms/SyncBindingSource.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
// https://stackoverflow.com/a/32886415
|
||||||
|
namespace LibationWinForms
|
||||||
|
{
|
||||||
|
public class SyncBindingSource : BindingSource
|
||||||
|
{
|
||||||
|
private SynchronizationContext syncContext { get; }
|
||||||
|
|
||||||
|
public SyncBindingSource() : base()
|
||||||
|
=> syncContext = SynchronizationContext.Current;
|
||||||
|
public SyncBindingSource(IContainer container) : base(container)
|
||||||
|
=> syncContext = SynchronizationContext.Current;
|
||||||
|
public SyncBindingSource(object dataSource, string dataMember) : base(dataSource, dataMember)
|
||||||
|
=> syncContext = SynchronizationContext.Current;
|
||||||
|
|
||||||
|
protected override void OnListChanged(ListChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (syncContext != null)
|
||||||
|
syncContext.Send(_ => base.OnListChanged(e), null);
|
||||||
|
else
|
||||||
|
base.OnListChanged(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user