• 右键快捷菜单的创建及控件的动态添加


    任务:熟悉c#的winform右键快捷菜单的使用,熟悉使用右键实现控件的动态添加

    技术要点:

        1.实现控件的动态添加,设置控件的位置、大小和名称等属性

        2.熟悉ContextMenuStrip控件的使用

    实现过程:

      1.创建Winform窗体,并添加ContextMenuStrip控件

      2.编辑ContextMenuStrip控件,为其添加“添加控件”和“删除控件”两个选项

      3.此时运行程序,右键并不会弹出菜单,因为快捷菜单的使用,还需要绑定到其他的控件或窗体,这里将ContextMenuStrip绑定到Form1上,在Form1的ContextMenuStrip属性中设置:

      4.此时运行窗体,单击“右键”

      这里就不上图了,因为实在不知道怎么截屏了,一截右键弹出的快捷菜单就会消失,总之右键肯定是会出现快捷菜单的了,然后我们开始设置快捷菜单的对应的响应事件

     

    二 动态添加控件

      1.单击“ContextMenuStrip1”控件的"添加控件",添加对应的处理方法

    1    Button btn = new Button();
    2    btn.Size = new Size(100, 40);
    3    btn.Location = new Point(10,10);
    4    btn.Name = "btn1";
    5    btn.Text = "按键测试";
    6 
    7    this.Controls.Add(btn);

    这里需要注意的是,必须要有this.Controls.Add(btn)这句话,才能使控件最终添加到面板上;

    还有这里有一个问题就是,添加的控件只能在固定的一个位置,那如果是多个呢?????

    所以我们加入对添加个数的计数,用于控制添加控件的位置。

      2.添加变量“num”,对控件的个数进行计数,并利用这个变量对行列坐标进行更改,这里利用了“取余”和“取商”的两个特点(当然这里用了3,是因为我想一行显示三个,根据自己需要改吧),不知道别人是不是也是这么做的,反正这里的效果还是不错的。

     

    1     Button btn = new Button();
    2     btn.Size = new Size(100, 40);
    3     btn.Location = new Point(10+100*(num%3), 10+40*(num/3));
    4     btn.Name = "btn"+num.ToString();
    5     btn.Text = "按键"+num.ToString();
    6 
    7     this.Controls.Add(btn);
    8     num++;

      

    3.当然,这里还有个问题就是没有对边界进行判断,这里暂且不管了,并不是我想说的重点,有个悬念吧,以后有机会再写啦

     

    三.既然都可以添加了,自然也可以删除,不过问题就来了,添加new一个就好了,删除总不能直接delete啊,虽说我在创建的时候给每一个控件添加了名字,但是我还不知道怎么使用这个名字去删除控件,想来想去,不得不用绝招了:list数组

    list数组可以用来存放控件,很多人应该都知道吧,不知道也没关系,接着看就是了。

     

    1.先定义全局变量:

      num:保存控件的个数

      Lbtn:用于保存button的数组

    public int num = 0;
    List<Button> Lbtn=new List<Button>();

    控件的添加代码:

    1 Button btn = new Button();
    2 btn.Size = new Size(100, 40);
    3 btn.Location = new Point(10 + 100 * (num % 3), 10 + 40 * (num / 3));
    4 btn.Name = "btn" + num.ToString();
    5 btn.Text = "按键" + num.ToString();
    6 this.Controls.Add(btn);
    7 Lbtn.Add(btn);
    8 num++;

    控件的删除代码:

    1 this.Controls.Remove(Lbtn[num-1]);
    2 Lbtn.RemoveAt(num-1);
    3 num--;

    看了这么多代码,还是来看看效果图吧:

                                                

    第一张图:添加4个控件,实现自动换行

    第二张图:点击添加按键

    第三张图:点击删除按键

    效果很不错,删了加加了删,只要不是超出数组的索引范围不会出现问题

    代码下载链接:http://download.csdn.net/detail/u010312811/8533765

    菜鸟一枚,但有一颗不断进取的心; 兴趣所至,相信自己终会成功!!!!! 加油,imstrive
  • 相关阅读:
    distribution cleanup job & Agent History Clean Up
    在域环境下建立镜像
    查看发布服务器信息
    Publisherfailoverparnter
    查看/修改分发复制代理的各个属性
    一个分发复制+mirror的bug
    SQLIO.exe
    安装SQL2008 提示 创建usersettings/microsoft.sqlserver.configuration.landingpage.properties.se
    XOOM MZ606 刷机
    NYOJ242计算球体积
  • 原文地址:https://www.cnblogs.com/imstrive/p/4367170.html
Copyright © 2020-2023  润新知