Рейтинг:
1
BillWoodruff
Да, вы можете переопределить событие OnLoad формы:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
MessageBox.Show("click okay and the Form will appear");
}
Но, знаете ли вы
действительно хотите, чтобы пользователь не видел ничего, кроме MessageBox, когда он запускает приложение ? Если вы хотите сначала
показывать форма, а затем поставить MessageBox, попробуйте это:
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
MessageBox.Show("Are you ready ?");
}
Но я удивляюсь, почему это так ... какие особые обстоятельства требуют ... ты... нужно это сделать, потому что:
Просто двойной щелчок по поверхности дизайна формы в режиме дизайна вызовет автоматическую генерацию обработчика событий загрузки формы:
private void Form1_Load(object sender, EventArgs e)
{
// do whatever ...
}
который подключен к форме ... вы можете заглянуть в файл Designer. cs и посмотреть, как осуществляется соединение:
this.Load += new System.EventHandler(this.Form1_Load);
Или вы можете определить экземпляр (создать) своего собственного EventHandler и подключить его к форме:
public Form1()
{
InitializeComponent();
this.Load += MyOnLoad;
}
private void MYOnLoad(object sender, EventArgs e)
{
// do whatever
}
Или вы можете определить EventHandler для ' показанного события, как показано во втором примере кода здесь, чтобы форма появилась до появления MessageBox.
m.r.m.40
Большое вам спасибо, уч. но где я могу разместить этот код, чтобы переопределить функцию системы.окна.форм. должен быть класс или что-то вроде частичных классов.
BillWoodruff
Просто поместите этот код куда-нибудь в код формы, как и любое другое определение метода:
охраняемых переопределить недействительными OnShown(EventArgs в электронной)
{
база.OnShown (e);
Ящик для сообщений.Шоу ("вы готовы ?");
}
Ralf Meier
Я думаю, что исследователь экспериментирует с возможностями.
Этот вопрос совпадает с другими заданными ранее вопросами, которые, возможно, ведут к той же цели ...
Но ваши объяснения очень хороши ... +5 от меня ...
BillWoodruff
Спасибо, Ральф ! Я не читал других постов ОП.
Ralf Meier
Это то же самое, что и в любом другом вашем вопросе.
Вы создаете новую (свою собственную) базовую форму, в которой есть эти переопределенные методы, и каждая форма, которую вы хотите использовать, которая должна иметь такое поведение, должна быть производной от этой базовой формы, а не использовать "окна".Формы.Форма".
m.r.m.40
Проблема не в форме, вы исправили эту проблему своим первым ответом, проблема в кнопках, размещенных на usercontrols. Я не могу найти способ дать им ту функциональность, которую я хочу.
BillWoodruff
Для меня это звучит как другой вопрос.
Ralf Meier
И для меня тоже.
Но, если я не исправлю вашу проблему своими предложениями до сих пор ... что именно вы хотите сделать с usercontrols ? Пожалуйста, опишите его, и я уверен, что мы найдем решение - возможно, вместе.
Но я должен повторить свой вопрос в другом вашем вопросе : вы пробовали модифицированный код-вырезанный у меня, и это не решает вашу проблему ? Если нет - что именно должно произойти ?
m.r.m.40
Он работает так же на формах, но не на usercontrols.
Как насчет добавления специальную функциональность для моего baseusercontrol, которые помогают мне работать элементы управления UserControl.
Ralf Meier
В другом вопросе от вас я изменил обработчик-скрипт таким образом, что в Messagebox отображается каждый родитель элемента управления. Таким образом , если кнопка интегрирована в UserControl , а этот UserControl интегрирован в панель , которая помещена на форму, то результатом будет "Button1, UserControl1, Panel1, Form1".
Если вы хотите иметь такую функциональность только в UserControl, вы не должны переопределять OnVisibleChanged-метод, потому что UserControl не изменяет его видимое состояние. В этом случае вы могли бы добавить метод addhandler-вызов конструктора-сценарий (новые) и распоряжаться-скрипт удаления обработчиков - но Примечание : оригинальный распоряжаться вом пользовательских элементов управления реализуется в конструкторе-скрипт-часть тыс. пользовательских элементов управления. Если вы хотите изменить этот метод, вы должны вырезать его из конструктора-скрипта и вставить в UserControl-Script. Теперь вы можете добавить к нему несколько кодовых строк.
m.r.m.40
Спасибо за хорошее объяснение.
Я прочитал его через несколько часов после того, как смог решить свою проблему. но я буду иметь это в виду и постараюсь использовать его в том же контексте, в котором я уже застрял.
Ralf Meier
Вы дали ответ мне, а не Биллу, который должен получить этот ответ.
Если вы хотите, чтобы Билл увидел это, вы должны ответить на один из его комментариев ... Думаю, он тоже был бы рад ...