Foros del Web » Programación para mayores de 30 ;) » .NET »

Plantillas con .net y C#

Estas en el tema de Plantillas con .net y C# en el foro de .NET en Foros del Web. Qué tal. Estoy aprendiendo a utilizar el framework .Net utilizando C# mientras desarrollo una mini aplicación. La cosa es la siguiente, quiero saber cómo se ...
  #1 (permalink)  
Antiguo 13/06/2008, 09:22
 
Fecha de Ingreso: enero-2006
Ubicación: Maracay, Edo. Aragua
Mensajes: 206
Antigüedad: 18 años, 4 meses
Puntos: 0
Pregunta Plantillas con .net y C#

Qué tal.

Estoy aprendiendo a utilizar el framework .Net utilizando C# mientras desarrollo una mini aplicación.

La cosa es la siguiente, quiero saber cómo se hace una "plantilla" en .Net. Cuando digo "plantilla" me refiero a una ventana con un formato estándar que pueda utilizar en varias ventanas de la aplicación.

Buscando en Google encontré este tutorial, bastante bueno y explicativo, el problema es que dicen como hacer la plantilla, pero nunca dicen como invocarla.

Otra duda que tengo sobre lo mismo es la siguiente: si yo no quisiera una plantilla para una ventana completa, sino más bien para un pequeño formulario que debe aparecer en varias ventanas ¿cuál sería el procedimiento?

Espero que alguien pueda ayudarme. Agrego que aún no estoy completamente familiarizado con .Net y su librería de clases, así que hagan sus explicaciones de forma tal que yo pueda entenderlas.

Muchísimas gracias.

Código:
//Código de la plantilla que hacen en el manual:


/*
  to compile this source file, type
    csc MyWinApp.cs
*/

using System;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
using System.ComponentModel;

public class MyWinApp: Form {

  Label label = new Label();
  Button button = new Button();
  TreeView tree = new TreeView();
  ImageList imageList = new ImageList();
  static String imageFolder = "Images" + Path.DirectorySeparatorChar.ToString();

  // -------------- Images declarations ------------------------------------
  Image newFileImage = new Bitmap(imageFolder + "newFile.bmp");
  Image openFileImage = new Bitmap(imageFolder + "openFile.gif");
  Image saveFileImage = new Bitmap(imageFolder + "saveFile.bmp");
  Image printImage = new Bitmap(imageFolder + "print.gif");

  // -------------- End of Images declaration ------------------------------------

  // -------------- menu ------------------------------------
  MainMenu mainMenu = new MainMenu();

  MenuItem fileMenuItem = new MenuItem();
  MenuItem fileNewMenuItem;
  MenuItem fileOpenMenuItem;
  MenuItem fileSaveMenuItem;
  MenuItem fileSaveAsMenuItem;
  MenuItem fileMenuWithSubmenu;
  MenuItem submenuMenuItem;
  MenuItem fileExitMenuItem;

  // -------------- End of menu ------------------------------------
  
  // -------------- Toolbar ------------------------------------
  ToolBar toolBar = new ToolBar();
  ToolBarButton separatorToolBarButton = new ToolBarButton();
  ToolBarButton newToolBarButton = new ToolBarButton();
  ToolBarButton openToolBarButton = new ToolBarButton();
  ToolBarButton saveToolBarButton = new ToolBarButton();
  ToolBarButton printToolBarButton = new ToolBarButton();

  // -------------- End of Toolbar ------------------------------------

  // -------------- StatusBar ------------------------------------
  StatusBar statusBar = new StatusBar();

  StatusBarPanel statusBarPanel1 = new StatusBarPanel();
  StatusBarPanel statusBarPanel2 = new StatusBarPanel();

  // -------------- End of StatusBar ------------------------------------
 

  public MyWinApp() {
    InitializeComponent();
  }

  private void InitializeComponent() {
    this.Text = "My Windows Application";
    this.Icon = new Icon(imageFolder + "applicationLogo.ico");
    this.Width = 400;
    this.Height = 300;
    this.StartPosition = FormStartPosition.CenterScreen;

    imageList.Images.Add(newFileImage);
    imageList.Images.Add(openFileImage);
    imageList.Images.Add(saveFileImage);
    imageList.Images.Add(printImage);


    // menu
    fileMenuItem.Text = "&File";

    // the following constructor is the same as:
    //   menuItem fileNewMenuItem = new MenuItem();
    //   fileNewMenuItem.Text = "&New";
    //   fileNewMenuItem.Shortcut = Shortcut.CtrlN;
    //   fileNewMenuItem.Click += new System.EventHandler(this.fileNewMenuItem_Click);
    fileNewMenuItem = new MenuItem("&New", 
      new System.EventHandler(this.fileNewMenuItem_Click), Shortcut.CtrlN);

    fileOpenMenuItem = new MenuItem("&Open", 
      new System.EventHandler(this.fileOpenMenuItem_Click), Shortcut.CtrlO);
  
    fileSaveMenuItem = new MenuItem("&Save", 
      new System.EventHandler(this.fileSaveMenuItem_Click), Shortcut.CtrlS);

    fileSaveAsMenuItem = new MenuItem("Save &As", 
      new System.EventHandler(this.fileSaveAsMenuItem_Click));

    fileMenuWithSubmenu = new MenuItem("&With Submenu");

    submenuMenuItem = new MenuItem("Su&bmenu", 
      new System.EventHandler(this.submenuMenuItem_Click));

    fileExitMenuItem = new MenuItem("E&xit", 
      new System.EventHandler(this.fileExitMenuItem_Click));


    mainMenu.MenuItems.Add(fileMenuItem);
    fileOpenMenuItem.Checked = true;
    fileMenuItem.MenuItems.Add(fileNewMenuItem);
    fileMenuItem.MenuItems.Add(fileOpenMenuItem);
    fileMenuItem.MenuItems.Add(fileSaveMenuItem);
    fileMenuItem.MenuItems.Add(fileSaveAsMenuItem);
    fileMenuItem.MenuItems.Add(fileMenuWithSubmenu);
    fileMenuWithSubmenu.MenuItems.Add(submenuMenuItem);
    fileMenuItem.MenuItems.Add("-"); // add a separator
    fileMenuItem.MenuItems.Add(fileExitMenuItem);


    toolBar.Appearance = ToolBarAppearance.Normal;
    //toolBar.Appearance = ToolBarAppearance.Flat;
    toolBar.ImageList = imageList;
    toolBar.ButtonSize = new Size(14, 6);    

    separatorToolBarButton.Style = ToolBarButtonStyle.Separator;
    newToolBarButton.ToolTipText = "New Document"; 
    newToolBarButton.ImageIndex = 0;
    openToolBarButton.ToolTipText = "Open Document"; 
    openToolBarButton.ImageIndex = 1;
    saveToolBarButton.ToolTipText = "Save"; 
    saveToolBarButton.ImageIndex = 2;
    printToolBarButton.ToolTipText = "Print"; 
    printToolBarButton.ImageIndex = 3;

    toolBar.ButtonClick += new ToolBarButtonClickEventHandler(this.toolBar_ButtonClick);

    toolBar.Buttons.Add(separatorToolBarButton);
    toolBar.Buttons.Add(newToolBarButton);
    toolBar.Buttons.Add(openToolBarButton);
    toolBar.Buttons.Add(saveToolBarButton);
    toolBar.Buttons.Add(separatorToolBarButton);
    toolBar.Buttons.Add(printToolBarButton);

    tree.Top = 40;
    tree.Left = 20;
    tree.Width = 100;
    tree.Height = 100;

    label.Location = new Point(220, 40);
    label.Size = new Size(160, 30);
    label.Text = "Yes, click the button";
    
    button.Location = new Point(220, 80);
    button.Size = new Size(100, 30);
    button.Text = "Click this";
    button.Click += new System.EventHandler(this.button_Click);

    statusBarPanel1.BorderStyle = StatusBarPanelBorderStyle.Sunken;
    statusBarPanel1.Text = "Press F1 for Help";
    statusBarPanel1.AutoSize = StatusBarPanelAutoSize.Spring;
    statusBarPanel2.BorderStyle = StatusBarPanelBorderStyle.Raised;
    statusBarPanel2.ToolTipText = System.DateTime.Now.ToShortTimeString();
    statusBarPanel2.Text = System.DateTime.Today.ToLongDateString();
    statusBarPanel2.AutoSize = StatusBarPanelAutoSize.Contents;
    statusBar.ShowPanels = true;
    statusBar.Panels.Add(statusBarPanel1);
    statusBar.Panels.Add(statusBarPanel2);


    this.Menu = mainMenu;
    this.Controls.Add(toolBar);
    this.Controls.Add(tree);
    this.Controls.Add(label);
    this.Controls.Add(button);
    this.Controls.Add(statusBar);
  }


  // -------------- Event Handlers --------------------------

  private void fileNewMenuItem_Click(Object sender, EventArgs e) {
    MessageBox.Show("You clicked the File -- New menu.", "The Event Information");
  }

  private void fileOpenMenuItem_Click(Object sender, EventArgs e) {
    MessageBox.Show("You clicked the File -- Open menu.", "The Event Information");
  }

  private void fileSaveMenuItem_Click(Object sender, EventArgs e) {
    MessageBox.Show("You clicked the File -- Save menu.", "The Event Information");
  }

  private void fileSaveAsMenuItem_Click(Object sender, EventArgs e) {
    MessageBox.Show("You clicked the File -- Save As menu.", "The Event Information");
  }

  private void fileExitMenuItem_Click(Object sender, EventArgs e) {
    MessageBox.Show("You clicked the File -- Exit As menu.", "The Event Information");
  }

  private void submenuMenuItem_Click(Object sender, EventArgs e) {
    MessageBox.Show("You clicked the submenu.", "The Event Information");
  }

  protected void toolBar_ButtonClick(Object sender, ToolBarButtonClickEventArgs e) {
    
    // Evaluate the Button property to determine which button was clicked.
    switch (toolBar.Buttons.IndexOf(e.Button)) {
      case 1:
        MessageBox.Show("Second button.", "The Event Information");
        break;
      case 2:
        MessageBox.Show("third button", "The Event Information");
        break;
      case 3:
        MessageBox.Show("fourth button.", "The Event Information");
        break;
    }
  }        

  protected override void OnClosing(CancelEventArgs e) {
    MessageBox.Show("Exit now.", "The Event Information");
  }

  private void button_Click(Object sender, System.EventArgs e) {
    MessageBox.Show("Thank you.", "The Event Information");
  }

  // -------------- End of Event Handlers -------------------



  public static void Main() {
    MyWinApp form = new MyWinApp();
    Application.Run(form);
  }

}
  #2 (permalink)  
Antiguo 13/06/2008, 09:39
 
Fecha de Ingreso: enero-2006
Ubicación: Maracay, Edo. Aragua
Mensajes: 206
Antigüedad: 18 años, 4 meses
Puntos: 0
Respuesta: Plantillas con .net y C#

Autorespuesta:

Bueno, analizando bien el código, creo que encontré parte de la solución a mi duda:

En realidad, por la forma como está hechoo el código, me parece que ya, automáticamente, todas las ventanas trabajarán con esa plantilla ¿Cierto?

Supongo que por el método static desde el cual se corre la aplicación, que a su vez está dentro de la clase que define toda la estructura visual de las ventanas.

Código:
  public static void Main() {
    MyWinApp form = new MyWinApp();
    Application.Run(form);
  }

}
Pero entonces viene una nueva duda:

¿Qué tal si yo no quisiera que la plantilla aplicara para todas las ventanas, sino para algunas únicamente?

Además, claro está, que eso tampoco responde a mi pregunta sobre "plantillas parciales":

Cita:
"Si yo no quisiera una plantilla para una ventana completa, sino más bien para un pequeño formulario que debe aparecer en varias ventanas ¿cuál sería el procedimiento?"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:12.