博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# 自定义控件使其填充方格且自动变换大小
阅读量:5985 次
发布时间:2019-06-20

本文共 2459 字,大约阅读时间需要 8 分钟。

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 /// 19 /// 填充按钮 20 /// 21 /// 按钮数量 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 /// 34 /// 布局按钮 35 /// 36 ///
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

你可能感兴趣的文章
python __init__.py
查看>>
使用rollup构建你的JavaScript项目【一】
查看>>
面向对象的JavaScript之继承(二) 构造函数继承
查看>>
用code打造自己的过渡动画
查看>>
火掌柜iOS端基于CocoaPods的组件二进制化实践
查看>>
Jenkins集成Docker镜像实现自动发布
查看>>
Java MVC 1.0规范开始进入公开评审阶段
查看>>
(翻译) MongoDB(14) 在 Debian 上安装MongoDB社区版
查看>>
MAT(java 内存分析工具简单使用)
查看>>
Git如何检出指定目录或文件
查看>>
WeX5中input拍照上传图片方法分享,可单图与多图
查看>>
android servicemanager与binder源码分析二 ------ servicemanager服务提供者
查看>>
React Router中NamedComponent与Params使用
查看>>
href的那些事
查看>>
RecyclerView中Adapter和ViewHolder的封装
查看>>
xcache 源码包编译安装
查看>>
前端开发思考与实践
查看>>
tcp/ip参数控制
查看>>
[分享]iOS开发-UIView顺时针旋转、逆时针旋转
查看>>
防止 DDoS 攻击的五个「大招」!
查看>>