Мне нужно поднять родителей SizeChange событие из моего пользовательского элемента управления (AdvancedButton). Мне нужно изменить размер моего пользовательского элемента, если размер контейнера будет изменен. Но я не знаю, как я могу получить доступ к контейнерам «events.I попробовал этот путь:Как получить доступ к событию контейнеров из пользовательского элемента управления?
public AdvancedButton()
{
Form1 frm = (Form1)this.FindForm();
frm.SizeChanged += OnFormSizeChanged;
DoubleBuffered = true;
MouseDown += OnMouseDown;
MouseUp += OnMouseUp;
MouseMove += OnMouseMove;
Click += OnClick;
}
private void OnFormSizeChanged(object sender, EventArgs e)
{
this.Width += this.Width - 1;
this.Height += this.Height - 1;
}
Но этот способ не работает, когда я пытаюсь запустить application.There это ошибки» текст: необработанное исключение типа «System.NullReferenceException» произошло в Kyrsovoi.exe
Я нашел один способ, который работает, но мне это не подходит, потому что здесь мы должны FindForm жет() в Form1.Designer.cs:
private void InitializeComponent()
{
...
this.AdvancedButton1 = new WindowFormsApplication1.AdvancedButton(FindForm());
...
}
MyButton.cs код:
public AdvancedButton(Form parent)
{
parent.SizeChanged += OnFormSizeChanged;
DoubleBuffered = true;
MouseDown += OnMouseDown;
MouseUp += OnMouseUp;
MouseMove += OnMouseMove;
Click += OnClick;
}
private void OnFormSizeChanged(object sender, EventArgs e)
{
this.Width += this.Width - 1;
this.Height += this.Height - 1;
}
Пожалуйста, help.Maybe кто знает, какие способы решения этой задачи.
Не делайте этого. Вместо этого используйте свойства «Anchor» или «Dock». – SLaks