#c_sharp #объекты
Есть метод обработки события
private void BillsPanel_MouseDown(object sender, MouseEventArgs e)
{
billsPanel.Cursor = Cursors.SizeAll;
mouse_offset = new Point(-e.X, -e.Y);
}
В дальнейшем мне надо будет использовать тот же метод для другий объектов. Могу ли
я как-то использовать object sender. Чтобы писать sender.Cursor Если да, то каким именно
образом?
UPD: Возникла новая задача. Надо было методы для передвижения элементов - панелей
и формы. С панелями разобрался, а с формой творятся чудеса - она ужасно прыгает помимо
того, что стоит if, в котором координаты не отнимаются.
private void Panel_MouseMove(object sender, MouseEventArgs e)
{
var obj = sender as Control;
if (sender is Form)
obj = sender as Form;
else if (sender is Control)
obj = sender as Control;
if ((sender is Control) && (e.Button == MouseButtons.Left))
{
Point mousePos = MousePosition;
mousePos.Offset(mouse_offset.X - this.Location.X,
mouse_offset.Y - this.Location.Y);
obj.Location = mousePos;
} else if((sender is Form) && (e.Button == MouseButtons.Left))
{
Point mousePos = MousePosition;
mousePos.Offset(mouse_offset.X, mouse_offset.Y);
obj.Location = mousePos;
}
Ответы
Ответ 1
private void BillsPanel_MouseDown(object sender, MouseEventArgs e) { if (sender is Control) { Control control = (Control)sender; control.Cursor = Cursors.SizeAll; } mouse_offset = new Point(-e.X, -e.Y); }Ответ 2
Приведите ваш объект к нужному типу и используйте: var obj = sender as Panel; "Но есть нюанс" функцию можно будет использовать только для объектов этого типа. Поэтому есть смысл подъняться по "дереву предков" до первого имеющего нужное вам свойство или функцию.
Комментариев нет:
Отправить комментарий