iorikyoID:iorikyo
10469次访问,排名9938好友0人,关注者0
iorikyo的文章
原创 10 篇
翻译 0 篇
转载 1 篇
评论 1 篇
最近评论
BoBo_32:在系统中正好此文章将的内容.

在本地使用"控制台程序"可是实现.

但是将此代码拷贝到winform应用程序,编译可以通过,但是在运行时提示:MissingManifestResourceException异常,请问如何处理呢???

请大虾指点一下啊:)
文章分类
    收藏
      相册
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 .net中用代码生成界面控件收藏

      新一篇: 用C#设置系统时间和本地时间 | 旧一篇: Ajax简介

             .net虽然不是专门用来做桌面程序的,但是它提供了丰富的winform程序控件,使得.net用来做桌面应用程序也非常方便。.net的界面配置工具在做winform界面时很方便,但是一直以来都习惯了对控件的拖拉,可视化修改其属性,双击添加事件代码。但是这种界面编辑方式有一个最大的限制那就是程序界面基本上就定格在拖拉出来的这些控件上,想根据具体情况来显示不同的界面,那就必须要用代码动态生成。下面这些代码是一个动态生成界面的程序的一部分:

      protected void NewTabPage( string pageText )
        {
         TabPage tabPage = new TabPage();
         tabPage.Text = pageText;

         tabPage.Size = new System.Drawing.Size(800,600);
         Bitmap bitmap = new Bitmap(@".\main.jpg");
         tabPage.BackgroundImage = bitmap;

         int[] xPos = {0,0,0,0,620,620,620,620};
         int[] yPos = {182,282,382,482,182,282,382,482};
         Bitmap buttonBitmap = new Bitmap(@".\main_but.gif");
         Bitmap smallbuttonbmp = new Bitmap(@".\smallmain_but.gif");
         for(int index=1; index < 9; index++)
         {
          Button button = new Button();
          button.FlatStyle = FlatStyle.Popup;
          button.BackgroundImage = buttonBitmap;
          button.ForeColor = Color.Yellow;
          button.ContextMenu = this.contextMenu3;
          
          button.Location = new System.Drawing.Point(xPos[index-1], yPos[index-1]);
          button.Size = new System.Drawing.Size(176, 49);
          button.Name = "button" + index.ToString();
          button.Text = "button" + index.ToString();
          button.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
          button.Click += new System.EventHandler(this.button_Click);
          button.MouseMove  += new MouseEventHandler(this.button_MouseMove);
          tabPage.Controls.Add(button);
         }
         
         int[] posY = {208, 280,352,440};
         int[] sizeX = {48,48,48,80,184,184,184,184};
         string[] str = {"Url","TimeOut","Title","DisplayItems"};
         for(int index=0; index < 4; index ++)
         {
          Label label = new Label();
          label.Image = buttonBitmap;
          label.Location = new System.Drawing.Point(270, posY[index]);
          label.Size = new System.Drawing.Size(sizeX[index], 14);
          label.Text = str[index];
          label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
          tabPage.Controls.Add(label);

          TextBox textBox = new TextBox();
          textBox.BorderStyle = BorderStyle.None;
          textBox.Location = new System.Drawing.Point(320, posY[index]);
          textBox.Size = new System.Drawing.Size(sizeX[index+4], 21);
          textBox.Name = "textBox" + index.ToString();
          textBox.Text = "";
          textBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.textBox_KeyDown);
          tabPage.Controls.Add(textBox);


          //绘制打开DisplayItems详细信息的按钮
          if (index==3)
          {
           Button btn_DItems=new Button();
           btn_DItems.Location=new System.Drawing.Point(320+sizeX[index+4]+10,posY[index]);
           btn_DItems.Size=new System.Drawing.Size(80,23);
           btn_DItems.Text="详细";
           btn_DItems.BackgroundImage = smallbuttonbmp;
           tabPage.Controls.Add(btn_DItems);
           btn_DItems.Click+=new System.EventHandler(btn_DItems_click);
           btn_DItems.FlatStyle = FlatStyle.Popup;
           btn_DItems.MouseMove  += new MouseEventHandler(this.button_MouseMove);
          }
          
         }
          
         tabControl1.Controls.Add(tabPage);
         //选中卡页
         tabControl1.SelectedIndex = tabControl1.TabPages.IndexOf(tabPage);
         
         bool exist = false;
         foreach(TreeNode node in this.treeView1.TopNode.Nodes)
         {
          if(node.Text.Equals(tabPage.Text.Split('*')[0]))
          {
           exist = true;
           break;
          }
         }
         if( !exist )
         {
          TreeNode node = new TreeNode(tabPage.Text);
          this.treeView1.TopNode.Nodes.Add(node);
         }
        }

            程序生成一个new page,在这个new page上生成八个主按钮,四个lable和相对的textbox,而且对于第四个testbox生成一个打开详细信息的按钮,控件的名称,位置,大小都通过代码来控制,生成控件的个数也完全可以根据对index的赋值来控制,对于按钮的单击方法等相关事件代码要重写。值得一提的是,对于这些生成的控件,虽然被泛化成各种各样的形式,但都是从Control类泛化而来的,本质上还都是Control。

            这种动态生成界面的方法在一些时候经常用到,比如说我要通过读取XML文件的信息来进行界面配置,对用户展示不同的界面,使用户可以执行不同的功能。如果习惯了拖拉空间,刚开始做这些事情可能会觉得有些困难和烦琐,但是习惯下来之后,其实也是很方便的事情。

      发表于 @ 2006年09月27日 16:32:00|评论(loading...)|编辑

      评论:没有评论。

      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © iorikyo