Кнопка C # WinForms не работает - PullRequest
1 голос
/ 01 сентября 2011

это первый раз, когда я пытаюсь что-нибудь на этом языке или приложениях в любом случае.Я только что установил c # и не могу заставить этот код выполнить простое изменение значения.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            progressBar1.Value = 22;
            MessageBox.Show("completed!");

        }
    }
}

    namespace WindowsFormsApplication1
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code

        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.progressBar1 = new System.Windows.Forms.ProgressBar();
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // progressBar1
            // 
            this.progressBar1.Location = new System.Drawing.Point(42, 309);
            this.progressBar1.Name = "progressBar1";
            this.progressBar1.Size = new System.Drawing.Size(428, 54);
            this.progressBar1.TabIndex = 0;
            this.progressBar1.Value = 55;
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(42, 48);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(428, 45);
            this.button1.TabIndex = 1;
            this.button1.Text = "start";
            this.button1.UseVisualStyleBackColor = true;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.WhiteSmoke;
            this.ClientSize = new System.Drawing.Size(525, 409);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.progressBar1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.ProgressBar progressBar1;
        private System.Windows.Forms.Button button1;
    }
}

Все, что я сделал, это добавил

       progressBar1.Value = 22;
       MessageBox.Show("completed!");

, но когда я нажимаю на button1, ничего не происходит.

Кстати, весь этот код был создан программным обеспечением, разве так люди развиваются?Я думал, что это был весь код без «помощи», это похоже на меня 10 лет назад, когда я впервые начал с HTML, и frontpage сделал весь код для меня.:)

Ответы [ 3 ]

5 голосов
/ 01 сентября 2011

Чего не хватает в методе InitializeComponent(), примерно так:

this.button1.Click += new System.EventHandler(this.button1_Click);

Трудно сказать, почему это не было создано для вас. Обычно вы открываете дескриптор формы и дважды щелкаете по кнопке, и этот код создается, и вы попадаете в заглушку метода button1_Click.

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

Вы можете добавить подобный код самостоятельно, выполнив:

button1.Click += button1_Click;

Но будьте осторожны, так как это не относится к методу InitializeComponent(), который вызовет его повторный вызов.

1 голос
/ 01 сентября 2011

Вам нужно добавить обработчик button1_Click к событию Click.
В отличие от VB6, это не делается неявным образом.

Это можно сделать в конструкторе, выбрав кнопку и перейдя квкладка событий.


Чтобы ответить на ваш вопрос, дизайнер VS WinForms генерирует исходный код C #, который создает макет, который вы разработали.
Если вам не нравится эта парадигма, вы можете использоватьWPF.

Конечно, пользовательские интерфейсы WinForms можно создавать полностью вручную, но это будет крайне болезненно.

1 голос
/ 01 сентября 2011

Добавить

button1.Click += button1_Click;

где-то (конструктор Form1).

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