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 : UserControl13     {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 }

转载于:https://www.cnblogs.com/dyee/archive/2011/12/30/2307270.html

c# 自定义控件使其填充方格且自动变换大小相关推荐

  1. 计算机函数中数与数之间的冒号,如何在数字之间插入冒号以使其在Excel中自动成为时间格式?...

    如何在数字之间插入冒号以使其在Excel中自动成为时间格式? 当您在工作表单元格中插入时间格式时,您是否曾经每次输入冒号都感到烦恼? 在本文中,我将讨论在输入数字以使其在Excel中自动成为时间格式时 ...

  2. android设计一个多线程和画图的程序小球,Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能实例...

    本文实例讲述了Android开发之多线程中实现利用自定义控件绘制小球并完成小球自动下落功能的方法.分享给大家供大家参考,具体如下: 1.布局界面 xmlns:tools="http://sc ...

  3. 避免Gson使用时将一些字符自动转换为Unicode转义字符

    // 避免Gson使用时将一些字符自动转换为Unicode转义字符 public static Gson gson = new GsonBuilder().disableHtmlEscaping(). ...

  4. MyBatis-plus自动填充功能之自动填充时间

    MyBatis-plus自动填充功能之自动填充时间 一.前期工作 二.自动填充 2.1 数据库级别 2.2 代码级别 在实际操作过程中,我们并不希望创建时间.修改时间这些来手动进行,而是希望通过自动化 ...

  5. 如何在CentOS7中使ulimit -n 65535开机自动生效,看看ChatGPT怎么说

    文章目录 前言 GPT3.5 Q:Cenyos7中怎么使ulimit -n 65535开机自动生效 Q:3和4步不做会怎么样 Q:软限制和硬限制有什么区别 Q:只设置软限制或硬限制可以吗 GPT4 Q ...

  6. 怎样使微信中打开链接自动打开外部浏览器打开指定URL页面或者直接下载APP(安卓/苹果)文件

    最近很多朋友在使用微信分享转发网页链接的时候,都很容易碰到链接在微信中无法打开的问题.通常这种情况微信会给个提示 "已停止访问该网址" ,那么导致这个情况的因素有哪些呢,主要有以下 ...

  7. CAD二次开发 解决填充图案(Hatch)填充比例无法自动更新问题

    前言:记录在项目上遇到的bug和群友提供的解决方案. 背景 在项目中需要用程序自动修改填充图案Hatch的填充图案比例属性(PatternScale属性),把比例10改成比例20,但是修改后发现填充图 ...

  8. word 2013 题注、图注、插入图片自动修改大小、批量更新题注编号

    1 .题注 图片下面的文字说明,如  图 1.1.1 2.图注 图的标题格式,可以右键修改段落为居中,选中图片,点下此格式快捷居中等其他格式 3. 题注插入 效果 如下 4.题注自动居中对齐 先点击图 ...

  9. php随机问候语,php实现每天自动变换随机问候语的方法_php技巧

    本文实例讲述了php实现每天自动变换随机问候语的方法.分享给大家供大家参考.具体分析如下: 这里预先定义一个php数组,里面存放一些随机问候语,调用的时候指定是按照天,月还是年来自动更换问候语,如果选 ...

最新文章

  1. 非C++内建类A和B,在哪些情况下B能隐式转化为A
  2. macos剪切_如何使用macOS的内置“ Kill and Yank”作为替代剪切和粘贴
  3. JavaScript中Object.keys、Object.getOwnPropertyNames区别
  4. [Effective C++ --032]确定你的public继承塑模出is-a
  5. python制作的游戏如何转化为swf_如何从python生成swf格式的幻灯片?
  6. polycom安卓手机客户端_Spark,安卓上最好用的邮件客户端来了!附App下载
  7. 如何修改SQL Server 2008数据库服务器名称
  8. 计算机的硬盘和光驱的接口是什么类型的接口,连接硬盘和光驱是什么接口
  9. UE4学习笔记:学习UE4中的UMG(图形UI设计器)工具(一): Widget Blueprint控件蓝图
  10. laravel5整合sendcloud邮箱服务
  11. python 计算箱线图、中位数、上下四分位数等
  12. python初学者看什么书-关于 Python 的经典入门书籍有哪些?
  13. 小猪的Python学习之旅 —— 19.Python微信自动好友验证,自动回复,发送群聊链接
  14. Eclipse 常用快捷键整理
  15. Excel每次打开文件都会出现一个空白sheet1文件的一个解决方法
  16. 我00后,会Python,月薪5000,兼职1.5w
  17. pandas库读取多个excel文件数据并进行筛选合并处理后导入到新表格中
  18. C语言山行组合数,高中排列组合基础题-(含答案).doc
  19. 微信小程序CSS-父盒子跟子盒子之间的缝隙问题
  20. 软件项目管理课程论文

热门文章

  1. Django 前后台的数据传递
  2. CrazePony飞行器--相关资料网址
  3. IT人士有哪些保健建议
  4. .NET Compact Framework 2.0 SP2 for Platform Builder (4.2, 5.0, 6.0)
  5. Castle IOC容器与Spring.NET配置之比较
  6. 10kv电压互感器型号_10kv电流互感器的一次电流选择应遵循的基本原则
  7. Spring Boot 实战 —— MyBatis(注解版)使用方法
  8. WinForm控件之【NumericUpDown】
  9. 跟我一起学编程—《Scratch编程》第21课:打地鼠
  10. 在做mvc时遇到的一些问题