У меня есть usercontrol, и в этом usercontrol я создаю один делегат для вызова метода winform?
В моем приложении у меня есть только одна форма, остальные - это пользовательский контроль.когда я сохраняю новую запись, сообщение будет мне показано клиенту в основной форме, все идет нормально, но оно не показывает сообщение в основной форме alertpanel lable.
public delegate void MessageAlert(string Message,AlertNotification enumNotification); public partial class ManageTenant : UserControl { public MessageAlert CallBack { get; set; } private async void ManageTenant_Load(object sender, EventArgs e) { CallBack("Load Successfully",AlertNotification.Success); } }Вот мой код формы:
public partial class Main : Form { Timer timer; public Main() { InitializeComponent(); } private void Main_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; this.MinimumSize = this.Size; this.MaximumSize = this.Size; ManageTenant manageTenant = new ManageTenant(); manageTenant.CallBack = new MessageAlert(DisplayAlert); } public void DisplayAlert(string message, AlertNotification enumAlertNotification) { timer = new Timer(); if (AlertNotification.Success == enumAlertNotification) { this.AlertPanel.BackColor = Color.YellowGreen; this.lblMessage.Text = message; #region hideAlertMessage timer.Interval = 2000; timer.Tick += (s, e) => { this.AlertPanel.Visible = false; timer.Stop(); }; timer.Start(); #endregion } } }
Что я уже пробовал:
Я создаю делегат в своем пользовательском элементе управления для доступа к методу winform, но ничего не показываю. Вот мой код:
public delegate void MessageAlert(string Message,AlertNotification enumNotification); public partial class ManageTenant : UserControl { public MessageAlert CallBack { get; set; } private async void ManageTenant_Load(object sender, EventArgs e) { CallBack("Load Successfully",AlertNotification.Success); } }Вот код формы:
public partial class Main : Form { Timer timer; public Main() { InitializeComponent(); } private void Main_Load(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; this.MinimumSize = this.Size; this.MaximumSize = this.Size; ManageTenant manageTenant = new ManageTenant(); manageTenant.CallBack = new MessageAlert(DisplayAlert); } public void DisplayAlert(string message, AlertNotification enumAlertNotification) { timer = new Timer(); if (AlertNotification.Success == enumAlertNotification) { this.AlertPanel.BackColor = Color.YellowGreen; this.lblMessage.Text = message; #region hideAlertMessage timer.Interval = 2000; timer.Tick += (s, e) => { this.AlertPanel.Visible = false; timer.Stop(); }; timer.Start(); #endregion } }
BillWoodruff
Я хотел бы увидеть, как вы ответите на вопрос, заданный в вашем другом недавнем посте об этом проекте, и ответите на предлагаемые решения.
Если вы размещаете и показываете UserControls, которые создаются и загружаются при запуске вашего проекта, но не помещаются в форму или другую коллекцию ControlCollection, если все UserControls имеют одинаковый размер, и только один из них отображается в любой момент времени ... это очень простой сценарий.
Пожалуйста, уточните свой вопрос и дайте более подробную информацию о вашем дизайне. QA-это две улицы, и чем больше вы вносите свой вклад, тем больше вероятность того, что вы получите полезную помощь.
awaisshabir
Спасибо за ответ .
в моем приложении winform у меня есть только одна основная форма,в которой у меня есть строка меню, Панель alertpanel и панель контейнеров . а остальное - это пользовательский контроль.
если я нажму, например, меню employee, то employee user control load in the container panel. if i add new record in the employee the message is show in the AlertPanel like " Successfully Insert record."