-
2022-02-16 11:37:56
一、实现效果
在 Winform中窗体(Form)就像一个容器,可以包含所有的控件(比如:panel、button、textedit等控件);如果把窗体看做是 Winform 中最大的容器,那么Panel可以看做第二,Panel控件则是专门用于界面的排版布局,相当于 Web 开发中的层(div),几乎所有控件都可以包含到 Panel 中,包括窗体。
①获取到指定窗体下的所有控件;
②获取到指定Panel下的所有控件;
③获取到窗体下的所有TextEdit类型控件;
④根据控件名称获取到该控件;
二、实现方法
/// <summary> /// 获取指定窗体或面板下的所有控件 /// </summary> /// <typeparam name="T">控件类型</typeparam> /// <param name="containChildControlWindow">包含子控件的窗体(比如窗体是[Controls]、panel是[panel.controls])</param> /// <returns></returns> private Stack<Control> GetAllControlOfWindows(Control.ControlCollection containChildControlWindow) { Stack<Control> tmpStack = new Stack<Control>(); foreach (Control control in containChildControlWindow) { tmpStack.Push(control); } return tmpStack; } /// <summary> /// 获取指定窗体或面板下的指定类型的控件 /// </summary> /// <typeparam name="T">控件类型</typeparam> /// <param name="containChildControlWindow">包含子控件的窗体(比如窗体是[Controls]、panel是[panel.controls])</param> /// <returns></returns> private Stack<T> GetAppointControlOfWindows<T>(Control.ControlCollection containChildControlWindow) { Stack<T> tmpStack = new Stack<T>(); foreach (var control in containChildControlWindow) { if (control is T) { tmpStack.Push((T)control); } } return tmpStack; } /// <summary> /// 通过控件名称获取到控件 /// </summary> /// <param name="controlName">控件名称</param> /// <param name="containChildControlWindow">包含子控件的窗体(比如窗体是[Controls]、panel是[panel.controls])</param> /// <returns></returns> private Control GetControlOfName(string controlName, Control.ControlCollection containChildControlWindow) { if (string.IsNullOrEmpty(controlName)) return null; foreach (Control item in containChildControlWindow) { if (item.Name.Equals(controlName)) { return item; } } return null; }
三、调用方法
//获取到窗体下包含的所有控件 private void btn_getAllControlOfWindow_Click(object sender, EventArgs e) { Stack<Control> controls = GetAllControlOfWindows(this.Controls); ShowControlInfo(controls); } //获取到Panel下包含的所有控件 private void btn_GetAllControlOfPanel_Click(object sender, EventArgs e) { Stack<Control> controls = GetAllControlOfWindows(this.panel1.Controls); ShowControlInfo(controls); } //获取窗体下的所有TextEdit类型控件 private void btn_GetAllTextEditControlOfWindow_Click(object sender, EventArgs e) { Stack<TextEdit> controls = GetAppointControlOfWindows<TextEdit>(this.Controls); ShowControlInfo(controls); } //根据输入的控件名称获取控件 private void btn_GetControlOfName_Click(object sender, EventArgs e) { //通过控件名称获取控件 string inputControlName = textEdit1.Text.Trim(); Control control = GetControlOfName(inputControlName, this.Controls); if (control!=null) { string strInfo = $"名称为【simpleButton1】的控件信息如为:{control.Name} {control.Text} {control.Size} {control.Enabled = false}"; ShowInfo(strInfo); } } /// <summary> /// 显示控件信息 /// </summary> /// <typeparam name="T">控件类型</typeparam> /// <param name="controlList">控件列表</param> private void ShowControlInfo<T>(Stack<T> controlList) { if (controlList == null || controlList.Count <= 0) return; string strTmp = string.Empty; foreach (var item in controlList) { if (item is Control) { Control control = item as Control; strTmp += $"控件名称【{control.Name}】 控件描述【{control.Text}】" + "\r\n"; } } strTmp += $"\r\n 共有:{controlList.Count} 个控件"; ShowInfo(strTmp); } /// <summary> /// 显示信息 /// </summary> /// <param name="info">信息</param> private void ShowInfo(string info) { memoEdit_ShowInfo.Text = info; }
更多相关内容 -
浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题
2020-08-28 19:17:24下面小编就为大家分享一篇浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题,具有很好的参考价值,希望对大家有所帮助 -
python窗体控件
2020-12-02 14:27:55广告关闭云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求qmainwindow qwidget qdialogqmianwindow方法addtoolbar() centralwidget()setcentralwidget() menubar() set...int timeout=0)点击按钮关闭窗体...广告关闭
云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求
qmainwindow qwidget qdialogqmianwindow方法addtoolbar() centralwidget()setcentralwidget() menubar() setstatusbar()statusbar().showmessage(message,int timeout=0)点击按钮关闭窗体事件self.button1.clicked.connect(self.onbuttonclick) def onbuttonclick(self):sender=self.sender() print(sender.text()+...
2# -- coding:utf-8 -- 【简介】 布局中用到的addstretch函数例子from pyqt5.qtwidgets importqapplication ,qwidget, qvboxlayout , qhboxlayout ,qpushbutton import sysclass windowdemo(qwidget): def init(self ):super().init() btn1 = qpushbutton(self) btn2 = qpushbutton(self) btn3 =qpushbutton(self) bt...
窗体事件的重写,close event事件2.qmessagebox消息框的使用本节知识视频教程以下开始文字讲解:二、窗体的居中1. 默认情况下,我们的窗体默认是居中在屏幕中心的。 2. 手动调整到屏幕中心位置通过desktop()函数来获取桌面控件的对象qdesktopwidget通过桌面对象的width()函数来获取屏幕的宽度的分辨率举例输出桌面...
__init__() # 先执行tk这个类的初始化 self.title(登录界面) #self.geometry(620x420) self.resizable(0,0) # 窗体大小不允许变,两个参数分别代表x轴和y轴 self.iconbitmap(.+os.sep+img+os.sep+student.ico) #self = royalblue # 加载窗体 self.setup_ui() def setup_ui(self):# ttk中控件使用style对象设定 self...
一、tkinter介绍tkinter模块只要用户安装好python环境就可以直接使用; 1. 第一个tkinter程序import tkinter as tk # 给tkinter重命名为tkroot = tk.tk() #新建一个窗体root.mainloop() # 展示窗体2.设置属性并添加控件设置窗体标题、指定窗体大小、添加按钮、输入框、标签并布局import tkinter as tk root = tk.tk()...
例如:?当控件数量众多时,这种布局方式更有条理。 btn.grid(row=1, column=0)顺便提一句,如果你希望可以像 vb 那样所见即所得地设计窗体控件...python 有很多可实现 gui 的库,在之前的文章中有过一个整理:如何用 gui 提高 python 程序的颜值? 但没有针对某个具体的库做介绍。 最近有同学提到希望...
一、填充当前学生信息1. 需求目前我们已经实现的功能是在主窗体双击表格任一行,弹出明细窗体。 我们我们需要做的是:将主窗体中对应的学生信息传递到明细...否则如果后面要对这个控件的属性进行修改的话系统就会报错! 现在我们的明细窗体的搭建已经基本完成了:学生明细信息数据全部填充完毕; 保存按钮处于消失...
前言在上一节实现主窗体信息查询功能中我们实现了在主窗体中通过单条件查询或者组合查询进行学生信息的筛选功能,系统能够在所有的数据中精确地找到某个具体的符合条件的学生信息。 但是我们发现在主窗体中显示的都是概要信息,如果我们想要鼠标双击表格中的某一项就想查看某个学生的详细信息该怎么实现呢?...
最大化 # 得到桌面控件 desktop = qapplication.desktop() # 得到屏幕可显示尺寸rect = desktop.availablegeometry() # 设置窗口尺寸 self.setgeometry(rect) #设置窗口显示 self.show()主函数if name == main:主函数 # 声明变量 app = qapplication(sys.argv) # 创建窗口 window = mywindow()# 调用最大化显示 ...
那么自己去定义函数? 格式:def 函数名称(): 函数的内容,具体就是很多的python代码本节知识视频教程:https:v.qq.comxpagem31492zrowr.html知识要点:一、gui编程的前提,需要库tkinter库,这个一个开发gui的模块,里面有很多的控件二、创建窗体项目 1、导入库tkinter import tkinter2、创建窗体window=tkinter.tk...
前言上一节我们介绍了登录窗体的gui设计与功能实现,用户的账号和密码校验完成后应当跳转到主窗体内容,这一节我们将具体介绍主窗体界面的设计与功能实现! ----一、基础界面设计我们新建一个900x640的窗口,顶部加入图片,下面主体部分创建两个panedwindow容器,左边添加按钮,右边作为treeview显示界面...
掌握菜单控件,调用类qmainwindow2. 利用qmenu的类型,由qmenubar来返回3. 点击情况:子菜单addmenu。 直接点击事件addaction本节知识视频教程以下开始文字讲解: 一、案例:登录窗体1. 实现窗体的加载(有图标)2. 用户名和密码的登录框3. 能够将用户名和密码获取过来二、开发过程提问:开发思路中需要加载什么? 1...
2.点击about idel菜单选项,在窗体中打印作者相关信息?3. 点击‘exit’菜单项,退出窗口程序?==========代码部分:===== 1 # -*- coding:utf-8 -*- 2 #python tkinter menu 3 #python version 3. 3. 2 4 #en = window 7 5 6 7 from tkinter import * 8 9 在python 3. 3. 2中,tkinter模块可以创建一个窗口控件,如...
必看(作者):http:www.atug.comandypatternspythondelphitalk.htm下面要示范的就是在xe2下完成. 其实源码检出后,里面有30多个示例,几乎涵盖了python4delphi的所有方面. 好吧,我们下面做个简单的加法计算器,主要是演示二者之间的参数传递. 当然,需要在delphi中先安装上pythonfordelphi控件包,安装不麻烦,可参考上述资料...
python3 gui用python3创建窗口并显示#! usrbinpython3# -*- coding:utf-8 -*- import tkinter top=tkinter.tk() #进入消息循环体top.mainloop()结果1:?...print(hello world!) win = tk() #定义一个窗体 win.title(hello world)#定义窗体标题 win.geometry(400x200) #定义窗体的大小,是400x200像素 btn = ...
desktop()函数,这个函数是在qapplication类中的。 函数返回的结果qdesktopwidget对象。 想要获取水平方向,调用width函数想要获取垂直方向,调用height函数3. 标签控件的使用qlabel本节知识视频教程视频内容以下开始文字讲解:一、相对布局与绝对布局相对布局布局中的控件可以随着窗体的变化而变化。 布局中的控件...
掌握的是qcalendarwidget日历控件2.click点击事件(信号)触发3. 掌握日期的格式化qdate本节知识视频教程以下开始文字讲解: 一、案例:菜单1. 新建第一个窗体2. 一级菜单的配置3. 二级菜单的配置4. 利用菜单功能实现界面跳转,实现一个多窗体的打开5. 利用菜单功能实现温馨提示? 效果图 二、开发思路1. 导入类qmain ...
掌握综合应用登录窗体2. 掌握密码设置setechomode本节知识视频教程以下开始文字讲解:1. 本节案例:快捷定位1. 把label控件上面的快捷键绑定到指定的另一...在pyqt4及以前 和2.x版本中,没有解决exec函数名称与python中的自带的函数名称相同导致的命名空间问题。 这两个函数都返回0,类似于c语言中的return 0的...
简单解析了pyuic生成的python代码3. 纯代码方式写了基于pyqt5的gui界面----本节知识视频教程 以下开始文字讲解:一、空的程序的生成理解1. 采用手工纯代码方式书写gui程序。 2.采用qtdesigner方式来进行界面规划。 通过两种不同的形式制作的pyqt5程序,观察有何不同。 理解qwidget是基于所有控件的基类,包括窗体控件...
windows 窗体 为了开发交互式 windows 应用, ironpython 须进行初始化. 默认情况下, python 控制台运行在单一线程下. 当线程等待控制台窗口输入文本时,被控制台动态创建的windows 应用不能处理 windows消息. 因此, 当前应用不会重画自身或处理输入到ui上. 我们提供一个“.py” 文件去初始化ironpython 到windows ...
-
Winform窗体自适应缩放,适用Dskin圆角窗体和控件
2019-11-14 09:25:12之前写过winform的窗体自适应,不过原生控件没有圆角,最近在使用Dskin开发,所以就写了可以让窗体和控件大小,位置,字体,圆角一起自适应的方案。 调用时 在需要自适应的窗体的构造方法中, InitializeComponent... -
C# WinForm制作异形窗体与控件的方法
2021-01-21 17:58:11本文实例讲述了C# WinForm制作异形窗体与控件的方法。分享给大家供大家参考,具体如下: ...下面我就把我在C#中实现异形窗体的核心代码贴出来给大家看看,有什么意见尽管提,别客气哦 首先,是一个根据Bitmap对象生成 -
十四、windows窗体高级控件
2022-02-14 23:17:30PictureBox控件 PictureBox控件可以显示来自位图、图标或者原文件,以及来自增强的元文件、Jpeg或GIF文件的图形。如果控件不足以显示整幅图像,则捡钱图像以适应控件的大小 using System; using System....1 PictureBox控件
- PictureBox控件可以显示来自位图、图标或者原文件,以及来自增强的元文件、Jpeg或GIF文件的图形。如果控件不足以显示整幅图像,则捡钱图像以适应控件的大小
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _1_PictureBox { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { label3.Visible = false; label4.Visible = false; label5.Visible = false; label6.Visible = false; label7.Visible = false; } private void radioNomal_CheckedChanged(object sender, EventArgs e) { pictureBox1.SizeMode = PictureBoxSizeMode.Normal; label3.Visible = true; label4.Visible = false; label5.Visible = false; label6.Visible = false; label7.Visible = false; } private void radioStretchImage_CheckedChanged(object sender, EventArgs e) { pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; label3.Visible = false; label4.Visible = true; label5.Visible = false; label6.Visible = false; label7.Visible = false; } private void radioAutoSize_CheckedChanged(object sender, EventArgs e) { pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; label3.Visible = false; label4.Visible = false; label5.Visible = true; label6.Visible = false; label7.Visible = false; } private void radioCenterImage_CheckedChanged(object sender, EventArgs e) { pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage; label3.Visible = false; label4.Visible = false; label5.Visible = false; label6.Visible = true; label7.Visible = false; } private void radioBZoom_CheckedChanged(object sender, EventArgs e) { pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; label3.Visible = false; label4.Visible = false ; label5.Visible = false; label6.Visible = false; label7.Visible = true ; } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _1_PictureBox { public partial class showPicture : Form { public showPicture() { InitializeComponent(); } public int i = 0; //图片索引参数 public string[] path = Directory.GetFiles(@"C:\Users\Admin\Desktop\Images\"); //Directory需要引入命名空间using System.IO private void 图片查看器_Load(object sender, EventArgs e) { //设定图片如何在PictureBox中显示 pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; //设定PicturBox默认显示图片 pictureBox1.Image = Image.FromFile(path[i]); //获取指定文件夹下所有文件的全路径 //下面循环仅仅是验证获取的路径都是什么文件路径,与此示例功能无关 //foreach (string onePicturePath in path) //{ // MessageBox.Show(onePicturePath); //是路径下所有的文件,不仅仅是图片文件 // //Console.WriteLine(onePicturePath); //不能空控制台输出 //} } private void button1_Click(object sender, EventArgs e) { i--; if (i < 0) i = path.Length - 1; //翻到第一张后此时i变为负数,将i重新赋值为“总长度-1”即最后一张索引值,从而达到训话浏览 pictureBox1.Image = Image.FromFile(path[i]); } private void button2_Click(object sender, EventArgs e) { i++; if (i > path.Length - 1) i = 0;//i大于总长度减一,即翻到最后一张后又点击了一次下一张,此时翻到第一张 pictureBox1.Image = Image.FromFile(path[i]); } } }
2 ImageList控件
- ImageList,又叫存储图像控件,用来存储图像的组合,但它不能显示图像,要显示它存储的图像需要借用第二个控件
- 第二个控件是包含ImageList属性的控件(例如:ListView或TreeView),这个属性一般和ImageIndex属性一起使用。ImageList属性设置为ImageList组件的一个实例,ImageIndex属性设置为ImageList中对应图像的索引
- ImageList控件两个常用属性
- ImageSize用来设置图像的大小,Width属性和Height属性,用来设置图像的宽和高,其默认值都为16,取值范围1~256之间。
- ColorDepth,用来设置颜色深度,取值为4位~32位。
- ImageList一个方法
- Draw:用于绘制指定的图像(可以理解为显示图像)
add()和addstrip()的区别 :AddStrip图像条方法的宽度必须为整数(是ImageList.size的整数倍),否则会发生异常
- Draw:用于绘制指定的图像(可以理解为显示图像)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _3_ImageList控件 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button3_Click_1(object sender, EventArgs e) { //声明一个图像变量 Image image1 = Image.FromFile(@"C:\Users\Admin\Desktop\Images\1.png"); //imageList控件添加元素的方法 //方法1,添加单个元素 imageList1.Images.Add(image1); //创建了一个窗口句柄(Handle) H wnd(windows) Graphics mygph = Graphics.FromHwnd(this.Handle); //Draw有三种方法 //第一种 (graphics对象,左上角点坐标,索引值) imageList1.Draw(mygph, new Point(50, 50), 0); //第一个参数是句柄,第二个参数是图片显示起始位置(图片左上角的位置,用于定位图片),第三个参数是图片索引值,即ImageList中的图片索引 //第二种:(graphics对象,水平坐标,垂直坐标,索引值) //第三种:(graphics对象,水平坐标,垂直坐标,图像宽度,图像高度,索引值) } private void button1_Click(object sender, EventArgs e) { //imageList控件添加元素的方法 //方法2 一次添加多个元素 Image image2 = Image.FromFile(@"C:\Users\Admin\Desktop\Images\2.png"); Image image3 = Image.FromFile(@"C:\Users\Admin\Desktop\Images\3.png"); Image image4 = Image.FromFile(@"C:\Users\Admin\Desktop\Images\4.png"); Image[] images = { image2, image3, image4 }; imageList1.Images.AddRange(images); //方法3 AddStrip Image image5 = Image.FromFile(@"C:\Users\Admin\Desktop\Images\5.png"); Image image6 = Image.FromFile(@"C:\Users\Admin\Desktop\Images\6.png"); imageList1.Images.AddStrip(image5); imageList1.Images.AddStrip(image6); //创建了一个窗口句柄(Handle) H wnd(windows) Graphics mygph = Graphics.FromHwnd(this.Handle); for (int i = 0; i < imageList1.Images.Count; i++) { imageList1.Draw(mygph, new Point(50, 50), i); //因为显示速度太快,给线程添加一个休眠时间; System.Threading.Thread.Sleep(1000); } } private void button2_Click(object sender, EventArgs e) { //删除imageList对象的方法 //removeAt(索引值) imageList1.Images.RemoveAt(5); imageList1.Images.RemoveAt(4); imageList1.Images.RemoveAt(3); } } }
3 ListView控件
- ListView控件是Windows列表视图控件,该控件显示可用五种不同视图之一显示的向集合
- LargeIcon:在想文本胖显示大图标,如果控件足够大,则显示在多列中
- SmallIcon:除显示小图标外,其他方面与大图标视图模式相同
- List:显示小图标,单总是显示在单列中。
- Details:在多列中显示向。
- Tile:每个向都显示一位一个完整大小的图标,在他的右边带向标签和子项信息(仅支持XP/SERVER2003)
using System; using System.Windows.Forms; namespace _5_ListView { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { String[,] myCountry = { { "China", "中国", "北京" }, { "Korea", "韩国", "首尔" }, { "Canada", "加拿大", "渥太华" }, { "American", "美国", "纽约" }, { "Jpan", "日本", "东京" }, { "SingPore", "新加坡", "新加坡" }, { "UK", "英国", "伦敦" }, { "Vietnam", "越南", "河内" }, }; for (int i=0; i < myCountry.Length/3; i++) //length获取数组的长度,是指最小元素的数量。例如上面数组共24个元素。 { ListViewItem mylvi = listView1.Items.Add(i.ToString()); //可以理解为添加了一个对象名称,或者行名称 mylvi.ImageIndex = i; mylvi.SubItems.Add(myCountry[i,0]); mylvi.SubItems.Add(myCountry[i,1]); mylvi.SubItems.Add(myCountry[i,2]); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (comboBox1.SelectedItem.ToString() == "LargeIcon") listView1.View = View.LargeIcon; if (comboBox1.SelectedItem.ToString() == "SmallIcon") listView1.View = View.SmallIcon; if (comboBox1.SelectedItem.ToString() == "Details") listView1.View = View.Details; if (comboBox1.SelectedItem.ToString() == "List") listView1.View = View.List; if (comboBox1.SelectedItem.ToString() == "Tile") listView1.View = View.Tile; } } }
4、TreeView控件
- Tree View控件可以为用户显示节点层次结构,就想在Windows资源管理器功能的左创个中显示文件和文件夹一样。树视图中的各个节点可能包含其他节点。称为子节点。用户可以按照展开或折叠的方式显示父节点或包含子节点的节点。通过将树是的CheckBoxes属性设置为True,还可以在节点旁边显示带有复选框的树视图。
- 添加和算出树节点
- Tree View控件以层侧结构的方式显示节点,Nodes属性包含舒适图中的顶级节点列表,它是TreeNode对象集合。
- 添加节点:先创建TreeNode对象,然后通过Nodes的Add方法创建的TreeNode对象添加为TreeView节点;
- 删除节点,可用Nodes属性的Remove方法或RemoveAt方法
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace TreeView { public partial class Form1 : Form { public string[] nodeName = new string[100]; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { TreeNode mytn = new TreeNode(); //实例化一个树节点对象 if (textBox1.Text.Trim() != "") { mytn.Text = textBox1.Text.Trim(); //给节点对象赋值 treeView1.Nodes.Add(mytn); //将节点添加到TreeView控件中 } else { MessageBox.Show("请先添加节点的名称"); } } private void button2_Click(object sender, EventArgs e) { TreeNode mytn = new TreeNode(); //实例化一个树节点对象 if (textBox1.Text.Trim() != "") { mytn.Text = textBox1.Text.Trim(); //给节点对象赋值 treeView1.SelectedNode.Nodes.Add(mytn); } else { MessageBox.Show("请先添加节点的名称"); } } private void button3_Click(object sender, EventArgs e) { TreeNode mytn = new TreeNode(); mytn = treeView1.SelectedNode; if (mytn.Nodes.Count > 0) { DialogResult myDR = MessageBox.Show("该节点下有子节点不允许删除,请先删除子节点"); } else { mytn.Remove(); } } private void button4_Click(object sender, EventArgs e) { TreeNode mytn = new TreeNode(); mytn = treeView1.SelectedNode; if (textBox1.Text.Trim() != "") { if(((System.Collections.IList)nodeName).Contains(textBox1.Text) != true) mytn.Text = textBox1.Text.Trim(); else MessageBox.Show("已经存在\""+textBox1.Text+"\"的节点不能重复添加","错误提示"); } else { MessageBox.Show("请先添加节点的名称"); } } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { //TreeNode mytn = new TreeNode(); //mytn = treeView1.SelectedNode; //MessageBox.Show(mytn.Text); } private void Form1_Load(object sender, EventArgs e) { int i = 0; foreach (TreeNode mynode in treeView1.Nodes) { nodeName[i] = mynode.Text; i++; } } } }
5、DateTimePicker控件使用户可以从日期
- DateTimePicker控件使用户可以从日期或时间列表中选择打个项。在用来日期时,显示为两部分,即一个下拉列表和一个类似于MonthCalendar控件的网格。
- 显示时间
- DateTimePicker控件默认是显示日期,显示时间时,必须将ShowUpDown属性设置为true,将Format属性设置为Time。
-
- 自动以格式显示日期
- 想要DateTimePicker控件以自定义格式显示日期,就的湘江Format属性设置为Custom,然后将CustomFormat属性设置为一个格式字符串
- DateTimepicker控件中当选定的日期和事件有Value属性确定。默认情况下,此空间的Value属性设置为当前日期。如果在代码中更改了此空间的Value属性,则此空间在窗体上自动更新一反应新设置。Value属性将DateTime结构作为它的值返回,有若干个DateTime结构的属性返回关于显示日期的特定信息。这些属性只用用于返回值,而不能用来设置值。
using System; using System.Windows.Forms; namespace _8_DateTimePicker控件 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void dateTimePicker1_ValueChanged(object sender, EventArgs e) { string tg = "甲乙丙丁午己庚辛壬癸"; string dz = "子丑寅卯辰巳午未申申酉戌亥"; string sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪"; int year = dateTimePicker1.Value.Year; label1.Text = "您选择的年为:农历" + tg[(year - 4) % 10] + dz[(year - 4) % 12] + "年,生肖是" + sx[(year - 4) % 12] + "年"; } } }
6、MonthCalendar控件
-
MonthCalendar控件是用来查看和设置日期信息。它是一个可视化网络图形界面,网格内包含月份的编号日期,这些日期排列在周一~周日下方的七个列表中。用户可以单击月份标题任何一侧的箭头按钮来选择不同的月份。该控件还有一个更强的功能。就是可以选择日期范围。
-
以粗体显示特定日期
-
MonthCalendar控件以粗体显示特殊的日期或重要出现的日子,用此控件显示特殊日期的属性有三个:
- BoldedDates属性包含单个日期,(仅设置单个日期以粗体显示,上/下一个月以及上一年/下一年的日期都不影响)
- AnnuallyBoldeDates属性包含每年以粗体显示的日期;(设置每年的同一日期粗体显示)
- MonthlyBoleedDates属性包含每月以粗体显示的日期;(设置每月的同一日期粗体显示)
- 这三个属性中的每一个都包含有一个DateTime对象数组。若要从这些列表中添加或移除日期,必须添加或移除DateTime对象。 -
显示多个月份
- MonthCalendar控件可显示多个月份,最多可同时显示十二个月。默认情况下,控件只显示一个月,用户可通过CalendarDimensions属性来设置要显示的月份个数,它有两个属性width属性和height属性,分别用来设置列数和行数。在设置或更改月历尺寸时,控件的大小也会随之改变:因此应确保窗体上有足够的空间共新尺寸用。 -
选择日期范围
- MaxDate属性和MinDate属性:这两个属性分别用来设置选择的最大日期和最小日期
- 注意:如果代码中设置日期范围,则MaxDate属性和MinDate属性的值都为DateTime对象。
-
更改外观(在win7及以后的系统中已经被放弃)
起作用的前提是按照下图所示进行设置设置,
ErrorProvide控件
- ErrorProvider控件可以对窗体或控件上的用户输入进行验证。当验证用户在窗体中输入或显示的数据集的内部错误时,一般要用该控件。
- ErrorProvide控件的主要属性是DataSource(与数据库相关)、ContainerControl和Icon。将ErrorProvider控件与数据绑定控件结合使用时,必须要将containerControl属性设置为相应的容器(通常是Windows窗体),以便于该组件可以在窗体上显示错误图标。
- Icon属性可以设置为自定义错误图标而不是默认图标。
- 设置DataSource属性后,ErrorProvider控件可为数据集显示错误信息
- ErrorProvider控件的主要方法时SetError方法,该方法可以指定错误信息字符串和错误图标应出现的位置。其使用格式为:Errorprovider变量名.SetError(需要在哪个控件旁边显示信息(textBox1),显示错误的信息的字符串(您输入的数据不正确))
using System; using System.Drawing; using System.Windows.Forms; namespace _12_ErrorProvider控件 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { if (textBox1.Text.Length < 8 || textBox1.Text.Length > 10) { errorProvider1.SetError(textBox1, "用户名必须为8~12位"); errorProvider1.Icon = new Icon(@"E:\C#\project\Windows窗体高级控件\ico\error.ico"); } else { errorProvider1.SetError(textBox1, "通过验证"); errorProvider1.Icon = new Icon(@"E:\C#\project\Windows窗体高级控件\ico\true.ico"); } } private void textBox3_TextChanged(object sender, EventArgs e) { if (textBox3.Text != textBox2.Text) { errorProvider2.SetError(textBox3, "两次输入的密码不一致"); errorProvider2.Icon = new Icon(@"E:\C#\project\Windows窗体高级控件\ico\error.ico"); } else { errorProvider2.SetError(textBox3, "通过验证"); errorProvider2.SetError(textBox2, "通过验证"); errorProvider2.Icon = new Icon(@"E:\C#\project\Windows窗体高级控件\ico\true.ico"); } } } }
HelpProvide控件
- HelpProvide控件用于将html帮助文件(.btm文件或chm文件)与windows应用程序相关联。用户可通过多种方式提供帮助:
- HelpNamespace属性将帮助文件与HelpProvider组件相关联;关联后需要设置窗体的HelpProvidershowHelp才可以在按下F1键后弹出帮助文件。
- 通过调用SetHelpNavigator并提供指定控件的HelpNavigator枚举值来指定提供的帮助类型:
- 通过调用setHelpKeyWord方法为帮助提供关键字或主题
注:网页可以用 Web DreamWeaver编辑器编辑网页帮助文档,chm可以用Easy chm进行编辑.
ProgressBar控件
- ProgressBar控件通过在水平条中显示响应数据的矩形来只是操作的进度。操作完成时,进度栏被填满。进度栏通常用于帮助用户了解等待一项长时间的操作(例句,加载大文件)完成所需的事件
- ProgressBar控件主要属性有value、setp、minimum和maximum。Minimum和Maximum属性设置进度栏可以显示的最大值和最小值;Value属性标识操作过程中已完成的进度:Step属性用于指定Value属性定增的值。
- 除直接设置Value属性修改ProgressBar控件显示的值外,还可以使用Increment方法来指定Value属性递增的值。
- 其格式为:ProgressBar对象.Inrement(进度值)
- ProgressBar一个重要的方法时PerformStep方法,主要用于递增该值Stem属性指定Value属性递增值
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ProgressBar { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //progressBar1.Value = 1000; //progressBar1.Increment(1500); } private void timer1_Tick(object sender, EventArgs e) { progressBar1.PerformStep(); } } }
实例:
using System; using System.Windows.Forms; namespace ProgressBar { public partial class Form1 : Form { //日志输出方法 public void outlog(string str) { textBox2.AppendText(DateTime.Now.ToString() + str + "\r\n"); } public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { btnSet.Enabled = true; btnStart.Enabled = false; btnPause.Enabled = false; btnStop.Enabled = false; } private void timer1_Tick(object sender, EventArgs e) { progressBar1.PerformStep(); } private void btnSet_Click(object sender, EventArgs e) { try { if (tbSettime.Text.Trim() != "") { progressBar1.Minimum = 0; progressBar1.Maximum = Convert.ToInt32(tbSettime.Text); progressBar1.Step = -1; progressBar1.Value = progressBar1.Maximum; btnSet.Enabled = false; btnStart.Enabled = true; textBox2.AppendText("========================================================\r\n"); outlog("时间正确设置,请点击开始键继续。。。"); } else { MessageBox.Show("请输入正确的秒数,必须为正整数"); } } catch (Exception) { MessageBox.Show("请输入正确的秒数,必须为正整数"); } } private void btnStart_Click(object sender, EventArgs e) { btnStart.Enabled = false; btnPause.Enabled = true; btnStop.Enabled = true; timer1.Enabled = true; timer1.Interval = 1000; timer1.Start(); } private void timer1_Tick_1(object sender, EventArgs e) { if (progressBar1.Value > progressBar1.Minimum) { progressBar1.PerformStep(); outlog("进度条工作正在进行,已经完成了" + Convert.ToInt32(((1 - Convert.ToDouble(progressBar1.Value) / Convert.ToDouble(progressBar1.Maximum)) * 100)).ToString() + "%"); //(最大值-当前值)/最大值=进度百分比 // 1-当前值/最大值=进度百分比 } else { outlog("进度已经完成"); timer1.Stop(); btnSet.Enabled = true; btnStart.Enabled = false; btnPause.Enabled = false; btnStop.Enabled = false; } } private void btnPause_Click(object sender, EventArgs e) { if (timer1.Enabled == true) { outlog("进度已经被暂停"); btnPause.Text = "继续"; timer1.Stop(); } else { outlog("进度条继续工作"); btnPause.Text = "暂停"; timer1.Start(); } } private void btnStop_Click(object sender, EventArgs e) { outlog("进度条停止工作\r\n==================="); timer1.Enabled = false; progressBar1.Value = 0; btnPause.Enabled = false; btnSet.Enabled = true; btnStart.Enabled = false; btnStop.Enabled = false; btnPause.Text = "暂停"; } } }
任务实施
using System; using System.Drawing; using System.Windows.Forms; namespace 任务实施 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnAdd_Click(object sender, EventArgs e) { ListViewItem myLVI = lv1.Items.Add((lv1.Items.Count + 1).ToString()); myLVI.SubItems.Add(tbName.Text); myLVI.SubItems.Add(cbGender.Text); myLVI.SubItems.Add(TbTel.Text); myLVI.SubItems.Add(tbDepartment.Text); myLVI.SubItems.Add(DTPJOinTime.Value.ToString("yyyy年MM月dd日")); tbName.Clear(); cbGender.Text = ""; TbTel.Clear(); tbDepartment.Clear(); DTPJOinTime.Value = DTPJOinTime.MaxDate; tbName.Focus(); } private void Form1_Load(object sender, EventArgs e) { //设置时间最大值为当前日期,并将最大值复制给value DTPJOinTime.MaxDate = DateTime.Now; DTPJOinTime.Value = DTPJOinTime.MaxDate; progressBar1.Maximum = 5; progressBar1.Minimum = 0; progressBar1.Step = 1; pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; pictureBox1.Image = Image.FromFile(@"E:\C#\project\Windows窗体高级控件\任务实施\banner\雪上行者.PNG"); } private void btnModi_Click(object sender, EventArgs e) { //修改选定内容,首先判断是否有选定的内容,选定的项目数量大于0代表有被选中 if (lv1.SelectedItems.Count > 0) { lv1.SelectedItems[0].SubItems[1].Text = tbName.Text; lv1.SelectedItems[0].SubItems[2].Text = cbGender.Text; lv1.SelectedItems[0].SubItems[3].Text = TbTel.Text; lv1.SelectedItems[0].SubItems[4].Text = tbDepartment.Text; lv1.SelectedItems[0].SubItems[5].Text = DTPJOinTime.Value.ToString("yyyy年MM月dd日"); tbName.Clear(); cbGender.Text = ""; TbTel.Clear(); tbDepartment.Clear(); DTPJOinTime.Value = DTPJOinTime.MaxDate; tbName.Focus(); } } private void btndel_Click(object sender, EventArgs e) { //删除所选定的项目 lv1.SelectedItems[0].Remove(); } private void btnClear_Click(object sender, EventArgs e) { //清除ListView中所有内容 lv1.Items.Clear(); } //声明图片存放的路径,并声明一个随机变量,以便随机显示图片 string[] path = System.IO.Directory.GetFiles(@"E:\C#\project\Windows窗体高级控件\任务实施\banner"); Random r = new Random(); private void timer1_Tick(object sender, EventArgs e) { int num = 0; if (tbName.Text.Trim() != "") num++; if (cbGender.Text != "") num++; if (TbTel.Text.Trim() != "") num++; if (tbDepartment.Text.Trim() != "") num++; if (DTPJOinTime.Value != DTPJOinTime.MaxDate) num++; progressBar1.Value = num; //随机显示图片 pictureBox1.Image = Image.FromFile(path[r.Next(0,path.Length)]); } private void btnCheck_Click(object sender, EventArgs e) { lv1.ForeColor = Color.Black; //在ListView中查询文本 ListViewItem checkItem = lv1.FindItemWithText(tbCheck.Text); //判定是否查询到 if (checkItem != null) { this.lv1.TopItem = checkItem; checkItem.ForeColor = Color.Red; } else { MessageBox.Show(tbCheck.Text+"不存在"); } } } }
- PictureBox控件可以显示来自位图、图标或者原文件,以及来自增强的元文件、Jpeg或GIF文件的图形。如果控件不足以显示整幅图像,则捡钱图像以适应控件的大小
-
6.5(二) 窗体中控件及其应用添加控件(上)
2021-12-09 14:44:48使用控件向导向窗体上添加控件是一种基本方法。在窗体上添加控件后,往往还需要在设计视图中,对所添加的控件属性进行某些设置。 (1)添加文本框 例 添加文本框控件,用来分别显示当前系统日期、显示密码、显示...目录
(7)创建未绑定型组合框,使用组合框“在基于组合框中选定的值而创建的窗体上查找记录”
使用控件向导向窗体上添加控件是一种基本方法。在窗体上添加控件后,往往还需要在设计视图中,对所添加的控件属性进行某些设置。
(1)添加文本框
例 添加文本框控件,用来分别显示当前系统日期、显示密码、显示当前记录的汇总。操作步骤如下:
1)打开数据库,在“创建”选项卡的“窗体”分组中,单击“窗体设计”按钮,创建一个新的窗体,打开该窗体的设计视图,同时,打开“设计”选项卡.
2)在“设计”选项卡的“控件”分组中,单击“文本框”按钮,鼠标移到窗体上,显示文本框图标,按住左键拖动鼠标画出一个大小适当的文本框,这时打开”文本框”向导对话框。在这个对话框中可以设置文本框中文字的字体、字形、字号以及对齐方式等。
3)在“文本框向导”对话框中,单击“下一步“按钮,打开“输入法模式设置”对话框。在该对话框的“输入法模式设置”列表中,有三个列表项“随意”、 “输入法开启”和“输入法关闭”.如果文本框是用于接受汉字输入,选择“输入法开启”,例如姓名、商品名称等,这样在输入数据时,当光标移到该文本框上后,直接打开汉字输入方法;如果文本框用于接受输入英文和数字,例如工资、日期等,要选择“输入法关闭”或“随意”。
4)下一步,在“请输入文本框的名称”文本框中输入“输入密码”,单击“完成”按钮。文本框创建完毕,返回到窗体设计视图中.
5)双击文本框,打开文本框属性表。在属性表中,选择“数据”选项卡,单击“输入掩码”右侧“生成器”的按钮6)在打开的“输入掩码向导”对话框中,选择“密码”,然后单击“完成”按钮。
7)返回到“文本框属性”对话框中,在“输入掩码”框中,显示属性值为“密码”.
注意 在控件中设置输入掩码与在数据表中设置字段的输入掩码属性的方法完全相同。
8)按照上述步骤在窗体上添加一个文本框,然后双击文本框,打开属性表.选择“全部”选项卡。
9)在“名称”和“控件来源”文本框中,分别输入属性值“今日”和表达式“=Date()”,设置“格式”属性为“长日期”。10)单击“视图”按钮,把窗体从“设计视图”切换到“窗体视图”,在“今日”文本框中显示系统当前日期。在“输入密码”中,输入密码后显示“*"号。
11)保存窗体命名为“密码示例”。(2)添加面体标题
使用Access提供的标题控件,可以直接在窗体中添加标题,省去了进行设置的步骤。其标题的内容是由窗体的数据源决定的。
例 下面介绍添加窗体标题的操作步骤.
打开“密码示例”窗体,切换到设计视图,在“设计”选项卡的“页眉/页脚”组中,单击“标题”按钮。则在窗体中,自动添加“页眉/页脚”节,同时在页眉节中,立即显示出窗体标题“密码示例”。(3)添加选项组
例 在教师窗体中添加一个政治面目选项组。操作步骤如下:
1)打开“教师”窗体,切换到设计视图。在“设计”选项卡的“控件”组中,单击“选项组”按钮,在窗体主体节右侧的适当位置上拖动鼠标画出一个大小适当的矩形。
2)在打开“请为每个选项指定标签”对话框中,依次输入每个选项的标签: “党员”、“团员”和“群众”.然后,单击“下一步”。
3)在打开的“请确定是否使某选项成为默认选项”对话框中,要求确定是否需要默认选项.通常选择“是,默认选项是”选项,并指定“党员”为默认项。然后单击“下一步”按钮。4)在打开的“请为每个选项赋值”对话框中,默认即可。然后单击“下一步”按钮。
5)在打开的“请确定对所选项的值采取的动作”对话框中,选择默认.然后单击“下一步”按钮。6)在打开的“请确定在选项组中使用何种类型的控件”对话框中,选择“选项按钮”及“蚀刻”。
7)在打开的“请为选项组指定标题”对话框中,在“请为选项组指定标题”文本框中,输入标题“政治面貌”,单击“完成”按钮。8)在工具栏上,单击【视图】按钮,选择“窗体视图”选项组设计结果。
(4)绑定型和未绑定型组合框
组合框(或列表框)分为绑定型和未绑定型两种,通常在窗体上,使用控件创建组合框时,都是创建未绑定型组合框。在使用中,用户从组合框(或列表框)选择列表项。
如果组合框是与表(或查询)的一个字段链接在一起,在设计视图中,一定显示的是该字段的名称。而在窗体视图中,当选择下一个记录时,如果组合框中的字段值随之变化,它一定是绑定型的,否则就是未绑定型的。
在窗体上创建非绑定型组合框,主要是为了通过选择组合框中的列表项值来决定窗体上查询的内容。
使用向导是创建未绑定型组合框的最好方法。使用向导创建组合框,有3种为组合框提供获取数值的方式:- 使用组合框查阅表或查询中的值
- 自行键入所需的值
- 在基于组合框中选定的值而创建的窗体上查找记录,注意只有设置了窗体的数据源,第3种方式才出现。
(5)创建未绑定型组合框,使用组合框查阅表或查询中的值
例 在上一例中,添加基于“系别”表的非绑定型组合框,操作步骤如下:
1)在“设计”选项卡的“控件”组中,单击(组合框)按钮,在窗体页眉节的适当位置单击鼠标。打开“请确定组合框获取其数值的方式”对话框,选择“使用组合框获取其他表或查询中的值”j单击“下一步”按钮。
2)在“请选择为组合框提供数值的表或查询”对话框中,选择“表:系别”,单击“下一步”按钮。
3)在“系别的哪些字段中含有要包含到组合框中的数值”对话框中,单击
按钮,把全部字段选中,添加到“选定字段”列表中,然后单击“下一步竹按钮。
4)在“请确定要为列表框中的项使用的排序次序”对话框中,选择“系别名称”字段,排序方式默认“升序”,单击“下一步’’按钮。5)在“请指定组合框中列的宽度”对话框中,默认列的宽度和默认隐藏键列,单击“下一步”按钮。’
6)在“请确定在组合框中选择数值后Microsof Access的动作”对话框中,默认选择呵己忆该数值供以后使用”,单击“下一步”按钮。7)在打开的“请为组合框指定标签”对话框中,默认组合框标签名称为“系别名称”,单击“完成”按钮。
8)单击“视图”按钮,切换到“窗体视图”,看到创建组合框的结果。(6)创建“自行键入所需的值”的未绑定型组合框
例 创建教师职称组合框,操作步骤如下:
1)打开“教学管理”数据库的“教师”窗体,然后切换到设计视图。
2)在“设计”选项卡的“控制”组中,单击(组合框)按钮,在窗体主体节的适当位置单击鼠标.在打开“请确定组合框获取其数值的方式”对话框中,选择“自行键人所需的值”,单击“下一步”按钮。
3)在打开的“请确定组合框中显示哪些值”对话框中,默认列数为“1”,在第一列中,输入“教授”、 “副教授”、 “讲师”和“助教”,单击“下一步”按钮。4)在打开的“请确定在组合框中选择数值后MicrosofY Access的动作”对话框中,默认选择“记忆该数值供以后使用”,单击“下一步”按钮。
5)在打开的“请为组合框指定标签”对话框中,输入标签名称: “职称”,单击“完成”按钮。然后,返回到窗体设计视图。
6)在选项卡的“对象视图”组中,单击“视图”按钮,创建组合框的结果。(7)创建未绑定型组合框,使用组合框“在基于组合框中选定的值而创建的窗体上查找记录”
例 在“教师授课”窗体上,创建一个教师姓名组合框,用来查找教师。操作步骤如下:
1)打开“教学管理”数据库的“教师授课”窗体,然后切换到设计视图。在“设计”选项卡的“控件”组中,单击(组合框)按钮,在窗体页眉节的适当位置用鼠标拖出一个矩形。在打开的“请确定组合框获取其数值的方式”对话框中,选择“在基于组合框中选定的值而创建的窗体上查找记录”,单击“下一步”按钮。
2)在打开的“教师的哪些字段中含有要包含到组合框中的数值”对话框“可用字段”窗格中,双击“姓名”字段,把它发送到“选定字段”窗格中,单击“下一步”按钮。3)在打开的“请指定组合框中列的宽度”对话框中,使用默认宽度即可,单击“下一步”按钮。
4)在“请为组合框指定标签”对话框中,输入“教师姓名”,单击“完成”按钮。5)在“设计“选项卡的“对象视图”组中,单击“视图”按钮,打开“窗体视图”;可以看到创建“教师姓名”组合框的结果。在组合框中,选择一个教师名,在教师档案表中,显示该教师的有关信息。
-
C#利用Label标签控件模拟窗体标题的移动及窗体颜色不断变换效果
2021-01-01 02:46:30本文主要给大家介绍了关于C#用Label标签控件模拟窗体标题移动及窗体颜色不断变换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 开发工具:VS2017 语言:C# DotNet版本:.Net ... -
C# 开发圆角控件(窗体)的具体实现
2021-01-01 06:16:35最近在做卡片视图的程序,要求将控件做成带有圆角的效果,下面是我在网上查找的资料,经过测试,确定可以实现功能。其中方法三既适应于控件,也适应于窗体。 先上传效果图: 方法一: 增加命名空间:using System.... -
C# 窗体控件闪烁问题
2019-01-23 09:25:49C# 窗体程序,窗体上控件过多,会导致打开程序时窗体闪烁,下面有个不错的方法,大家可以试一试,在你的主窗体中加入如下代码: protected override CreateParams CreateParams { get { CreateParams cp =... -
C#学习(十五)——窗体控件用法大全
2020-07-01 20:16:12C#控件及常用设计整理 1、窗体 1.1、常用属性** (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal ... -
c#窗体控件随窗体变大变小
2020-01-13 13:51:18c#窗体控件随窗体变大变小 窗体的控件在窗体变大时,是不会跟随变大的,这样窗体就会显示成左上角排布整齐的小控件,右下侧空白的样子,所以我们要设置一下 //窗体控件随窗体改变大小 private float X;//当前窗体... -
控件-Win Forms窗体控件
2017-05-03 22:06:04在项目开发中,界面设计是一个很重要...在桌面应用程序中,C#.Net提供了两种形式的设计窗体:Windows应用程序下的Windows窗体和asp.net web应用程序下的web窗体。为了使用方便,这里分别将其简称为:Win Forms和Web Fo -
Visual Studio Winform窗体控件Menustrip
2021-01-09 15:13:35首先介绍一下我们在使用这种编程软件时就会就会涉及到很多的控件与功能的了解,自己就是在做机房重构的时候因为用的是Visual Studio这个软件不知道怎么添加窗体的菜单,之前刚入门的时候是用的VB进行的,这两个平台... -
C# 解决窗体控件过多闪烁现象
2020-11-09 15:58:20解决窗体控件过多闪烁现象子父窗体方式多个独立的窗体 子父窗体方式 在父窗体加入下面的代码(具体的功能不清,据说是开启的缓冲器然后在刷新显示出来,但确实要好很多) #region 开启界面双缓冲 解决窗体切换闪屏... -
VB讲课笔记06:窗体与常用控件
2018-03-10 17:24:29VB讲课笔记06:窗体与常用控件 一、窗体设计 窗体是VB中最基本的对象,是应用程序的基本组成部分,是菜单栏、工具栏和控件等对象的容器,是应用程序与用户交互的窗口或对话框。窗体设计是整个VB应用程序设计的基础... -
C# WinForm子窗体显示(被父窗体控件挡住解决)
2019-09-23 15:11:15父窗体属性isMdiContainer=true(右图visual studio直接改),并在子窗体打开事件中如下所写,昨天还正常,今天打开子窗体发现,子窗体没弹出来,最后发现被挡在了父窗体控件下面。 try { Form1 frm = new Form1... -
Qt中子窗体控件向父窗体控件传值
2015-07-09 22:49:14今天学习Qt中控件相互传值的方法。其中参考了一些网上的意见。今天学习了两种方法。...第一幅图是主窗体,在画笔宽度文本框和画笔颜色文本框中可以填入宽度和样色值,决定画笔宽度和颜色,然后选择右边的画椭圆,画 -
C#父窗体监听子窗体事件&C#子窗体产生事件给父窗体&父窗体触发子窗体的事件&父窗体中处理子窗体控件的事件&...
2020-12-22 20:05:34C#父窗体监听子窗体事件或在父窗体中处理子窗体控件的事件 文章目录C#父窗体监听子窗体事件或在父窗体中处理子窗体控件的事件前言使用默认事件委托子窗体代码演示父窗体使用方法使用自定义的事件委托子窗体代码演示... -
c#中如何跨线程调用windows窗体控件?
2018-01-10 17:32:02我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。 首先来看传统方法: public partial class Form1 : Form { ... -
C#窗体控件更新(一)
2017-11-15 15:19:00一、窗体1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 取值有三种: Normal (窗体正常显示)、 ... -
C#中常用的Windows窗体控件、公共属性和公共事件
2019-05-07 19:41:34一、控件含义 在C#中可视化界面(WinForm)中的组件统称为...二、常用的Windows窗体控件 控件名称 含义 Label 标签控件 LinkLabel 链接标签控件 Button 按钮控件 TextBox 文本框控件 Radio... -
C# 在一个From窗体中调用另一个窗体中的控件
2019-12-17 21:12:38本文主要介绍如何实现在一个窗体中调用另一个窗体中的控件。 如:实现在Form2中调用Form1中的checkBox1,下面是实现步骤: 1、在Form1窗体中实现Form2窗体对象form2,并设置form2对象的Owner为Form1。 Form2 ... -
C# winform窗体及其控件的自适应
2020-03-07 16:19:05为了提升用户的体验,窗体不能再固定其大小(用户不能随意改变窗体的大小),所以要做到窗体适应电脑屏幕的分辨率,窗体中的控件要跟随窗体的变化比例而变化。 通过网上查找学习,发现有几个位大佬的方法不错,... -
C#中父窗口和子窗口之间控件互操作实例
2020-12-26 02:25:40很多人都苦恼于如何在子窗体中操作主窗体上的控件,或者在主窗体中操作子窗体上的控件。相比较而言,后面稍微简单一些,只要在主窗体中创建子窗体的时候,保留所创建子窗体对象即可。 下面重点介绍前一种,目前常见... -
excel数据输入窗体控件_工作表数据输入或Excel用户窗体
2020-08-05 17:41:03excel数据输入窗体控件 工作表数据输入或Excel用户窗体 (Worksheet Data Entry or Excel UserForm)If you're building an Excel workbook, in which users with basic Excel skills will enter data, would you ... -
【winform窗体控件上叠加自定义控件出现透明卡顿】的解决办法
2019-10-16 14:05:13如图,在项目中,给panel上面加了一个自定义控件,如下图红框标记的位置。但是在窗体加载时,每次自定义...在使用自定义控件的窗体代码中重写下面的方法: protected override CreateParams CreateParams { g... -
C#如何让控件随着窗体变化大小
2018-11-28 14:17:17各位请看这个小窗体,我把这控件按阵型依次排开, 可当我让窗体全屏显示的时候,问题就出来了!如图 如何全屏显示窗体里的控件 采用Form_Resize()。思路是窗体变化时,直接重写这个变化函数。具体... -
C# winform 跨线程更改窗体控件的属性
2019-04-29 09:08:36当winform程序中新开一个线程,是无法改变主线程中窗体控件的属性的,否则运行时会报错。 若想在其他线程中控制主线程中的窗体控件,则必须利用BeginInvoke方法。 例如:添加一个名为textbox1的TextBox控件,想将...