Я пытаюсь добавить метод AlreadyBound в свой код, чтобы избежать ошибки
HResult=0x80070057 This causes two bindings in the collection to bind to the same property.
вызывается
System.Windows.Forms.ControlBindingsCollection.CheckDuplicates(Binding binding)
Мой код
public static void BindText(TextBox box, object dataSource, string dataMember)
{
if (AlreadyBound(box,"Text")) return;
box.DataBindings.Add("Text", dataSource, dataMember, true, DataSourceUpdateMode.OnPropertyChanged);
if (!(box is SnapTextBox snapbox)) return;
switch (snapbox.SnapType)
{
case SnapBoxType.Money:
snapbox.DataBindings[0].FormatString = "N2";
break;
case SnapBoxType.Real:
snapbox.DataBindings[0].FormatString = $"N{snapbox.SnapRealDecimals}";
break;
case SnapBoxType.Text:
break;
case SnapBoxType.Integer:
break;
default:
throw new ArgumentOutOfRangeException();
}
}
private static bool AlreadyBound(TextBox box, string propertyName)
{
foreach (var binding in box.DataBindings)
{
// what do I put here? something like
//if (binding.ToString() == propertyName) return true;
}
return false;
}
Где SnapTextBox - пользовательский элемент управления.
Как мне заставить AlreadyBound работать?