书小宅之C#——WinForm控件使用心得

一、要明确控件的层级关系,需要到文档大纲查看;

二、一般由容器控件充当父控件,为方便管理(便于窗体适应不同分辨率的电脑),在布局的时候就要注意容器和内部控件的属性管理,见下;

三、Location属性:子控件左上角的坐标点相对于父控件左上角的坐标点的位置;

四、为子控件设置Location、Anchor和Dock属性,都是子控件相对于 直接父控件 的关系而言的,并不是整个窗体;

五、Anchor 的属性有Top, Bottom, Left, Right四种可选,这四个属性可以组合使用,在“属性”里直接点击设置即可。当 直接父控件 的大小产生改变的时候体现这个参数的效果(如Normal窗体和最大化窗体之间的切换)。可以利用Anchor属性实现分辨率的适配问题。

1、Top表示当父控件的大小改变时,子控件上边缘距父控件下边沿的高度 不变;
2、Bottom表示当父控件的大小改变时,子控件下边缘距父控件下边沿的高度 不变;
3、Left表示当父控件的大小改变时,子控件左边缘距父控件左边沿的长度 不变;
4、Right表示当父控件的大小改变时,子控件右边缘距父控件右边沿的长度 不变;

例子
橘色的Panel是父控件,蓝色的Panel是子控件:
Normal时:
在这里插入图片描述

1、设置蓝色Panel子控件的Anchor属性为Right和Button后,改变父控件的大小,虽Location属性不变,要保证距离父控件下边沿和右边沿的长度不变,会保证子控件的大小不变,子控件左上角的坐标点相对于父控件左上角的坐标点的位置改变。
即可知:设置Anchor属性后,父控件的大小改变,则以Anchor属性为主导,Location属性只在初始化的时候对控件的定位有效。
最大化后效果:
在这里插入图片描述
2、设蓝色子Panel控件的Anchor属性为Top, Bottom, Left, Right,父控件的大小改变,要保证距离父控件上下左右边沿距离父控件的距离不变,则子控件的大小一定会改变。
最大化后效果:
在这里插入图片描述

六、Dock的属性有:Fill、Top, Bottom, Left, Right和None六种选择。Dock属性表示在子控件相对父控件的停放方式(和某一方向边沿的紧密贴合),不管父控件的大小如何改变,子控件的大小也会随之改变,当总保持这种停泊关系不改变。
例子
绿色的Panel是父控件,深蓝色的Panel是子控件:
Normal时:
在这里插入图片描述

1、当深蓝色Panel子控件Dock属性设置为None时,以Location和Size属性为准,效果类似Normal时的效果;
2、当深蓝色Panel子控件Dock属性设置为Fill属性时,子控件会完全填满父控件;
在这里插入图片描述
3、当深蓝色Panel子控件Dock属性设置为Top属性时,子控件会停靠在父控件的上边沿;
在这里插入图片描述
4、当深蓝色Panel子控件Dock属性设置为Bottom属性时,子控件会停靠在父控件的下边沿;
在这里插入图片描述
5、当深蓝色Panel子控件Dock属性设置为Right属性时,子控件会停靠在父控件的右边沿;
在这里插入图片描述
6、当深蓝色Panel子控件Dock属性设置为Left属性时,子控件会停靠在父控件的左边沿;
在这里插入图片描述

七、Panel直接添加添加点击事件无效;

八、BackColor属性设置为Transparent,有时候看不到自己想要的效果,是因为这个属性效果实际上是,子控件的颜色是透明的,但是只能透过子控件看到子控件位置处它的 直接父控件 的颜色,可通过文档大纲查看直接父控件是谁。也可以直接在文档大纲里拖拽改变层级关系,也可以在代码里通过PictureBox1.parent=panel1;将子控件PictureBox1的父容器设置为panel1,这样将PictureBox1的背景色设置为Transparent的时候,即可看到此处Panel的颜色。
除去label控件的字体外的背景色也可以采用类似的办法。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 C# WinForm 中实现修改密码功能,可以按照以下步骤进行: 1. 在 WinForm 中添加两个文本框和一个按钮,一个文本框是用于输入旧密码,另一个文本框是用于输入新密码,按钮是用于提交修改密码的操作。 2. 在按钮的 Click 事件中,编写代码实现密码修改的逻辑。首先,可以将用户输入的旧密码和新密码保存到字符串变量中,然后可以使用一些条件语句对密码进行验证,例如,旧密码是否正确,新密码是否符合要求等等。如果密码验证通过,可以调用相应的方法将新密码保存到数据库中。 下面是一个简单的密码修改示例代码: ```csharp private void btnChangePassword_Click(object sender, EventArgs e) { string oldPassword = txtOldPassword.Text.Trim(); string newPassword = txtNewPassword.Text.Trim(); // 验证旧密码是否正确 if (!ValidateOldPassword(oldPassword)) { MessageBox.Show("旧密码不正确!", "提示"); return; } // 验证新密码是否符合要求 if (!ValidateNewPassword(newPassword)) { MessageBox.Show("新密码不符合要求!", "提示"); return; } // 将新密码保存到数据库中 if (!SaveNewPassword(newPassword)) { MessageBox.Show("密码修改失败!", "提示"); return; } MessageBox.Show("密码修改成功!", "提示"); } private bool ValidateOldPassword(string password) { // TODO: 根据需要实现旧密码验证逻辑 return true; } private bool ValidateNewPassword(string password) { // TODO: 根据需要实现新密码验证逻辑 return true; } private bool SaveNewPassword(string password) { // TODO: 根据需要实现保存新密码到数据库的逻辑 return true; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值