UserControlA знает / должен знать UserControlB?
Затем создайте свойство типа UserControlB
в UserControlA
, затем, когда вы захотите передать данные в UserControlB
, используйте экземпляр, который у вас есть в UserControlB
свойство.
Что есть что? Да, может быть, пример BindingNavigator
и BindingSource
немного понятнее:
public class BindingNavigator
{
Public BindingSource BindingSource { get; set; }
public int Position
{
get {return BindingSource?.Position ?? -1};
set {if(BindingSource!=null) BindingSource.Position = value;}
}
}
Затем, когда вы отбросили экземпляр BindingNavigator
и экземпляр BindingSource
в форме, установите BindingSource
свойство BindingNavigator
до bindingSource1
.
UserControlA не знает / не должен знать UserControlB?
Использовать события. Это самый естественный способ. Каждый день вы используете его, как TextChanged
, SelectedIndexChanged
и так далее. Время создать его для вашего пользовательского элемента управления.
Фактически вам нужно вызвать событие в UserControlA
, а затем в форме, когда вы отбрасываете экземпляр UserControlA
и экземпляр UserComtrolB
, дескриптор Событие UserControlA
и свойство UserControlB
.
Чтобы сделать его более понятным, снова с BindingNavigator
и BindingSource
:
public class BindingNavigator
{
public event EventHanlder MovingNext;
public void MoveToNextRecord()
{
MovingNext?.Invoke(this, EventArgs.Empty);
}
}
Затем, когда вы отбросили экземпляр BindingNavigator
и экземпляр BindingSource
в форме, обрабатывают MovingNext
событие bindingNavigator1
и устанавливают позицию bindingSource1
:
bindingNavigator1.MovingNext += (obj, args) => {
bindingSource1.Position +=1;
};
Хотите узнать больше о событиях? Взгляните на следующие документы: