C # - Загрузка методов внутри конструктора - PullRequest
0 голосов
/ 22 июня 2011

Может ли кто-нибудь объяснить, почему при выполнении этого метода (в конструкторе) возникает синтаксическая ошибка:

public partial class Form1 : Form
{
    public Form1()
    {
        Load += YourPreparationHandler;
    }

    private void YourPreparationHandler(object sender, EventArgs e)
    {
        button22_Click(sender, e);
    }
}

Имя 'button22_Click' не существует в текущем контексте

Ответы [ 3 ]

5 голосов
/ 22 июня 2011

Является ли button22_Click членом Form1? Убедитесь, что метод существует, ошибка довольно очевидна.

4 голосов
/ 22 июня 2011

Определено ли button22_Click где-нибудь?Это было бы проблемой, если это не так.

1 голос
/ 22 июня 2011

Обычно в конструкторе есть что-то вроде этого:

public Form1()
{
   InitializeComponent();
}

Классы форм устанавливаются как частичные классы.Это связано с тем, что в Visual Studio, когда вы перетаскиваете компоненты на форму, за кулисами VS обновляет файл конструктора вашими обновлениями.

Итак, у вас будет

Form1.cs

Form1.Designer.cs

и, возможно,

Form1.xx.resx (если у вас есть глобализация на месте)

Если вы посмотрите на файл конструкторавы увидите нечто подобное, что Visual Studio генерирует код:

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.buttonTest = new System.Windows.Forms.Button();
            this.textBoxPW = new System.Windows.Forms.TextBox();
            this.label1 = new System.Windows.Forms.Label();
            this.textBoxOutput = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.SuspendLayout();
            // 
            // buttonTest

Держу пари, что файл конструктора отсутствует, испорчен или InitializeComponent был удален случайно.В любом случае объект (button_22) не существует или на него не ссылаются, поэтому вы не сможете вызвать событие щелчка на нем.

...