Вызвать метод usercontrol из формы c #? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть метод listviewupdate () в usercontrol schuler. Пользовательский контроль schuler находится в форме1. Тогда у меня есть форма2. Когда я нажимаю кнопку в form2, я хочу вызвать метод listviewupdate ().

Я попытался создать второй метод в form1, который вызывает метод listviewupdate (), а затем вызвал второй метод в форме 2, но я получил ошибку. Может кто-нибудь помочь мне?

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

@ Аксель Кемпер спасибо за ответ. Я сделал, как вы сказали, с помощью Program.MainForm.MyMethod(), но он не нашел MyMethod (). Затем я перешел в форму 1. Дизайн и там я увидел, что usercontrol был установлен в private, также я переключил его на public, и теперь он работает с Program.MainForm.schuler1.MyMethod() //schuler1 is the name of my user control.

Я просто не понимаю, почему это не работает с

Form1 form1 = Application.OpenForms[1] as Form1; form1.schuler1.ListviewUpdate(); //schuler1 is the name of my usercontrol

, даже если пользовательский элемент управления установлен на общедоступный, я получаю ошибку «System.NullReferenceException» в main.schuler1.ListviewUpdate();

0 голосов
/ 03 июня 2019

В вашем файле Program.cs вы можете определить глобально доступную переменную:

static class Program
{
    //  for external access to Form1 methods
    public static Form1 MainForm;

    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        MainForm = new Form1(args);
        Application.Run(MainForm);
    }
}

Статическая переменная MainForm может затем использоваться для доступа к любому общедоступному методу для Form1 через Program.MainForm.MyMethod().

Предполагая, что у вас есть доступ к объекту Form2 из Form1, вы можете использовать переменную объекта Form2 для вызова Form2 методов из Form1 методов.

Имейте в виду, что вы можете столкнуться с проблемами, когда (по незнанию ...) используете более одного потока.Читайте о BeginInvoke .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...