zoukankan      html  css  js  c++  java
  • c# 自定义控件使其填充方格且自动变换大小

     1 using System;
    2 using System.Collections.Generic;
    3 using System.ComponentModel;
    4 using System.Drawing;
    5 using System.Data;
    6 using System.Linq;
    7 using System.Text;
    8 using System.Windows.Forms;
    9
    10 namespace 方格练习
    11 {
    12 public partial class FillBtn : UserControl
    13 {
    14 public FillBtn()
    15 {
    16 InitializeComponent();
    17 }
    18 /// <summary>
    19 /// 填充按钮
    20 /// </summary>
    21 /// <param name="btnNum">按钮数量</param>
    22 public void FillButton(int btnNum)
    23 {
    24 //填充btnNum*btnNum个方格,现在放置的是罗列着的
    25 for (int i = 0; i < btnNum * btnNum; i++)
    26 {
    27 Button btn = new Button();
    28 this.Controls.Add(btn);
    29 }
    30 //定义方法,因为需要改变大小,所以单独
    31 this.LayoutBtns();
    32 }
    33 /// <summary>
    34 /// 布局按钮
    35 /// </summary>
    36 /// <returns></returns>
    37 private void LayoutBtns()
    38 {
    39 //去除启动状态,以免开启的时候FillBtn_SizeChanged会报错
    40 if (this.Controls.Count==0)
    41 {
    42 return;
    43 }
    44 //循环多少次?计算出来
    45 int btnLineNum = (int)Math.Sqrt(this.Controls.Count);
    46 //计算按钮的宽度
    47 int btnWidth = this.Width / btnLineNum;
    48 int btnHeight = this.Height / btnLineNum;
    49
    50 int btnIndex = 0;
    51 int btnX = 0, btnY = 0;
    52 //竖向的循环嵌套横着的循环
    53 for (int verticalIndex = 0; verticalIndex < btnLineNum; verticalIndex++)
    54 {
    55 btnY = verticalIndex * btnHeight;
    56 //水平向的循环
    57 for (int horizontalIndex = 0; horizontalIndex < btnLineNum; horizontalIndex++)
    58 {
    59 btnX = horizontalIndex * btnWidth;
    60 //获取要放置的方格
    61 Button btn = this.Controls[btnIndex] as Button;
    62 //设置当前方格的大小
    63 btn.Size = new Size(btnWidth, btnHeight);
    64 //设置当前方格的位置
    65 btn.Location = new Point(btnX, btnY);
    66 //下一个方格
    67 btnIndex++;
    68 }
    69 }
    70 }
    71
    72 private void FillBtn_SizeChanged(object sender, EventArgs e)
    73 {
    74 //设置当控件大小改变时的事件
    75 this.LayoutBtns();
    76 }
    77 }
    78 }
  • 相关阅读:
    C# 停止或开启服务
    微软企业库 缓存
    C# 获取图片一部分
    [转载]MVC3在win 2003虚拟主机上的调试
    mongodb查询的语法
    Mongodb亿级数据量的性能测试比较完整收藏一下
    正则验证数字
    收到了Gmail的Beta测试邀请
    C#新手经验点滴
    Windows消息机制
  • 原文地址:https://www.cnblogs.com/dyee/p/2307270.html
Copyright © 2011-2022 走看看