2013-12-13 3 views
0

Я написал много кода на Java и обнаружил, что создать приложение консоли или формы очень просто. Фактически, все, что нужно сделать, это добавить форму и отобразить эту форму. Просто как куки, так сказать. Но теперь у меня есть большой проект, который появляется в Visual C#, и я не использовал его так много. Я думаю, я не уверен, что я прав, но консольное приложение - это C#, это консольное приложение, которое не может принимать какие-либо события действий мыши. Я хочу иметь возможность добавлять элементы управления в C# из формы, как и в Java. Добавьте кнопку или добавьте меню. Но в C# есть несколько файлов, которые открываются, свойства, assemblyinfo.cs, form1.cs и т. Д. Код ниже представлен в форме designer.cs.Добавление меню программно

Итак, где лучший способ добавить компоненты с точки зрения программирования, а не дизайн визуальной точки зрения?

namespace WindowsFormsTestMenuApplication 
{ 
    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.menuStrip1 = new System.Windows.Forms.MenuStrip(); 
      this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
      this.openToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
      this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
      this.aToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
      this.bToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
      this.cToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); 
      this.menuStrip1.SuspendLayout(); 
      this.SuspendLayout(); 
      // 
      // menuStrip1 
      // 
      this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { 
      this.fileToolStripMenuItem, 
      this.openToolStripMenuItem, 
      this.optionsToolStripMenuItem}); 
      this.menuStrip1.Location = new System.Drawing.Point(0, 0); 
      this.menuStrip1.Name = "menuStrip1"; 
      this.menuStrip1.Size = new System.Drawing.Size(284, 24); 
      this.menuStrip1.TabIndex = 0; 
      this.menuStrip1.Text = "menuStrip1"; 
      // 
      // fileToolStripMenuItem 
      // 
      this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { 
      this.aToolStripMenuItem, 
      this.bToolStripMenuItem, 
      this.cToolStripMenuItem});    
      this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; 
      this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); 
      this.fileToolStripMenuItem.Text = "File"; 
      // 
      // openToolStripMenuItem 
      // 
      this.openToolStripMenuItem.Name = "openToolStripMenuItem"; 
      this.openToolStripMenuItem.Size = new System.Drawing.Size(48, 20); 
      this.openToolStripMenuItem.Text = "Open"; 
      // 
      // optionsToolStripMenuItem 
      // 
      this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem"; 
      this.optionsToolStripMenuItem.Size = new System.Drawing.Size(61, 20); 
      this.optionsToolStripMenuItem.Text = "Options"; 
      // 
      // aToolStripMenuItem 
      // 
      this.aToolStripMenuItem.Name = "aToolStripMenuItem"; 
      this.aToolStripMenuItem.Size = new System.Drawing.Size(152, 22); 
      this.aToolStripMenuItem.Text = "A"; 
      // 
      // bToolStripMenuItem 
      // 
      this.bToolStripMenuItem.Name = "bToolStripMenuItem"; 
      this.bToolStripMenuItem.Size = new System.Drawing.Size(152, 22); 
      this.bToolStripMenuItem.Text = "B"; 
      // 
      // cToolStripMenuItem 
      // 
      this.cToolStripMenuItem.Name = "cToolStripMenuItem"; 
      this.cToolStripMenuItem.Size = new System.Drawing.Size(152, 22); 
      this.cToolStripMenuItem.Text = "C"; 
      // 
      // Form1 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
      this.ClientSize = new System.Drawing.Size(284, 262); 
      this.Controls.Add(this.menuStrip1); 
      this.MainMenuStrip = this.menuStrip1; 
      this.Name = "Form1"; 
      this.Text = "Form1"; 
      this.menuStrip1.ResumeLayout(false); 
      this.menuStrip1.PerformLayout(); 
      this.ResumeLayout(false); 
      this.PerformLayout(); 

     } 

     #endregion 

     private System.Windows.Forms.MenuStrip menuStrip1; 
     private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem; 
     private System.Windows.Forms.ToolStripMenuItem aToolStripMenuItem; 
     private System.Windows.Forms.ToolStripMenuItem bToolStripMenuItem; 
     private System.Windows.Forms.ToolStripMenuItem cToolStripMenuItem; 
     private System.Windows.Forms.ToolStripMenuItem openToolStripMenuItem; 
     private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem; 
    } 
} 
+0

Начать чтение файлов и понимание сгенерированного кода. – SLaks

+0

Как woudl я собираюсь добавить еще один пункт меню в приведенном выше коде. Я попытался скопировать aToolStringMenuItem и вставить его в конец, а затем добавил в новую часть здесь this.cToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); но я все равно получаю и ошибаюсь. Я знаю, что добавить в элемент меню из конструктора проще, но я просто пытаюсь выяснить некоторые вещи на C#, программируя его программно. –

+0

Какая ошибка у вас? – SLaks

ответ

1

Вы пытаетесь добавить элементы управления во время выполнения? Если это так, как заявила SLaks, вам просто нужно создать новый экземпляр элемента управления и добавить его в вашу форму.

// Add a menustrip to the form. 
MenuStrip menuStrip = new MenuStrip(); 
menuStrip.Dock = DockStyle.Top; 
this.Controls.Add(menuStrip); 

В противном случае, почему бы не использовать визуальный конструктор для добавления элементов управления в вашу форму?

+0

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

1

Элементы управления WinForms являются обычными объектами, такими как AWT или Swing.

Вы можете создать new ToolStripItem(), задать его свойства, а затем добавить его в коллекцию DropDownItems.

+0

Ненавижу, чтобы спросить, а что такое коллекция DropDownItems. Я это что-то, что C# использовал для добавления элементов в форму. Я сейчас работаю, поэтому смотреть на визуальную студию по глубине немного сложно. Можете ли вы показать пример кода. Можете ли вы создавать формы и добавлять элементы меню в консольное приложение? –

+0

@DougHauf: Да. Единственное различие между консольным приложением и приложением WinForms заключается в том, что приложение WinForms не имеет консоли. Вы вставили полный образец кода в свой вопрос; _read it_! – SLaks

2

Звучит как-то как общий вопрос дизайна/подхода ко мне. Почему вы не используете WPF для WinForms? Дает вам довольно удобный дизайнер в Visual Studio. Вы можете удобно создавать свой графический интерфейс в стиле WYSIWYG. Поддерживает привязку данных, которая - когда-то знакомая - довольно удобна. Однако позже вы можете добавлять элементы управления и т. Д. Во время выполнения, см. Ответ Бримса. Примечание. Если вы используете WPF, вам нужно использовать диспетчера Windows, если вы хотите добавить элементы управления из другого потока, кроме Windows.

Смежные вопросы