【VB.NET】VB.NET窗体与控件问题的解答
如何同时改变窗体中控件的Text属性中显示文字的大小?
答:在设计窗体中,选中窗体,然后通过属性窗口对窗体的Font属性进行设置,这样,窗体中控件的Text文本大小都会随之发生变化,而不需要逐个控件去修改Font属性。我在项目中添加了另外一个窗体,并编写了一些代码,但是怎样才能运行后添加的这个窗体呢?
答:当项目中包含了多个窗体时,为了分别对每个窗体进行调试,就需要修改启动窗体,把需要调试的那个窗体作为启动窗体。具体的做法是:在“解决方案资源管理器”中选中项目,并单击右键,然后在弹出的菜单中选择“属性”选择,这是就会打开项目属性的Tab页面,在“应用程序”选项卡中,找到“启动窗体”,并根据需要在下拉列表框中选择需要启动的窗体。选中后,再次运行时,启动窗体就会改变了。如何让窗体在运行时是进行全屏显示?
答:通常情况下,窗体在运行后的大小与设计时是保持一致的,但是可以通过修改窗体的WindowState属性来改变窗体显示的情况。如果要全屏显示,其实就是将WindowState属性设置为Maximized。除了重新绘制窗体边框之外,有没有更简单的方法创建非矩形的窗体?
答:还有一种较为简单的方式来实现非矩形窗体,这种方式可以通过三个属性的设置就能实现。首先我们需要有一张可以作为背景的图片,这个图片上要包含所要显示窗体的形状,其他不需要显示出来的部分,需要用同一种颜色。例如,要显示一个圆形窗体,可以将圆形内部设置为蓝色,而圆形外部都是白色。有了这张图片后,就可以将它设置为窗体的BackGroundImage,然后将TransparencyKey属性设置为白色,并将FormBorderStyle属性设置为None,设置完毕后,再运行窗体,就会显示出圆形的窗体了。TextBox控件和RichTextBox控件有和区别?
答:二者的区别主要体现在以下四方面:
首先默认情况下TextBox控件只显示单行的文本,只有将MultiLine属性设置为True时,才能显示多行文本。而RichTextBox控件本身就是进行多行显示的。
其次,二者能容纳的字符数不同,TextBox控件能容纳的字符数少,RichTextBox控件能容纳的字符数多。具体容纳的字符数可以通过MaxLength属性查看默认值。
第三,RichTextBox控件可使用的方法更多,可以调用SaveFile方法或LoadFile方法对RTF类型的文本信息进行保存或加载。而TextBox控件没有这样的方法。
最后,TextBox控件中文本的字体只能进行整体设置,而RichTextBox控件允许对部分文本的字体进行设置。所有的控件都具有键盘事件吗?
答:只有能够获得焦点的控件才具有键盘事件,其他不能获得焦点的控件是不能触发键盘事件的。例如,Label控件就不能获得焦点,所以它就不具有键盘事件,而只具有鼠标事件。怎样实现,在单击窗体关闭按钮时,不会关闭窗体?
答:如果要想在单击窗体关闭按钮时,不关闭窗体就需要对窗体的FormClosing事件编写事件处理过程,在此事件处理过程中的参数是System.Windows.Forms.FormClosingEventArgs类型的,它有一个Cancel属性,当该属性值为True时,就可以取消该事件的操作。在这里也可以添加一个消息对话框,让用户进行选择是否需要关闭,从而增强应用程序的用户体验。我要在列表框中实现双击一个条目后,该条目会从列表框中删除,并显示在其他控件中,为什么不能显示被删除的条目?
答:出现这个问题的主要原因是编写代码时,没有注意语句的顺序,先调用了列表框的Remove方法将选中的条目删除,然后再为其他控件的Text属性赋值造成的。最简单的解决办法就是将为其他控件的赋值语句放在列表框的Remove方法调用之前。也可以在删除被选中的条目之前,将该值赋值给一个变量,然后再将变量值赋给其他控件。如何在窗体最小化时只显示在系统任务栏的托盘区中?
答:为了实现这个功能,需要在窗体中添加NotifyIcon控件,并为其设置Icon属性,即选择要显示的.ico图标,并设置Text属性,以便鼠标停留在图标上时显示相关提示信息。如果想要实现在窗体加载时就显示在托盘区中,就可以在窗体的Load事件中添加Me.Hide()语句 ,并将NotifyIcon控件对象的Visible属性设置为True。为了在双击该图标后显示窗体就需要在NotifyIcon控件对象的DoubleClick事件处理过程中将NotifyIcon控件对象的Visible属性设置为False,和Me.Show()语句。如何知道控件的默认事件是什么呢?
答:要想知道控件的默认事件非常简单,只需要在窗体设计界面双击选定的控件,就会在代码编辑器中添加该控件对象的默认事件框架。如果从界面中删去某个控件,与此控件相关的默认事件处理过程会不会也自动删除?
答:不能。虽然创建控件对象的默认事件处理过程时,可以通过在控件上双击来添加事件处理过程与事件源的关联框架代码,但是这个过程是不可逆的,它不会随着控件的删除而删除,必须手动进行删除或者将其变为注释,否则,很容易引发错误。为什么我对OpenFileDialog对话框已经通过代码进行了属性设置,为什么显示的时候没有变化呢?
答:发生这样问题的主要原因是对OpenFileDialog对话框对象的属性设置语句放在了ShowDialog方法的后面了。只要将所有的属性设置语句前移到ShowDialog方法之前,就可以进行正常显示了。KeyDown事件与KeyPress事件有什么区别?
答:首先,KeyDown事件和KeyPress事件的触发顺序和次数不同。KeyDown事件在某个键被按下时,只会触发一次,而且是先于KeyPress事件被触发;KeyPress事件会在KeyDown事件之后被触发,而且只要长时间按住一个键,就会被多次触发。其次,二者能够接收的键值不同。KeyDown事件可以接收任何一个键盘按键的值,而KeyPress事件只能接收具有ASCII码值的按键值。如果要实现在一个控件处于选中状态时能够对“回车”有响应,应该编写哪个事件过程?
答:如果要响应“回车”,最好的方式是编写该对象的KeyDown事件。在事件处理过成的框架下对System.Windows.Forms.KeyEventArgs类型的参数e的KeyCode属性进行判断是否等于Keys.Enter。如果满足条件再进行进一步处理。如何动态的向窗体中添加控件?
答:向窗体中动态添加控件的过程大致分为以下几步,下面以动态添加Button控件为例进行说明。添加的Button对象名为MyButton。
(1)声明并实例化所需类型的控件对象。
Dim MyButton As New Button
(2)对该控件对象进行属性设置,特别是显示的位置和大小。可以使用SetBounds方法直接完成大小和位置的设置。并添加到窗体控件集合中。
Sub NewButton()
MyButton.SetBounds(100, 100, 50, 50)
MyButton.Text = “MyButton”
Me.Controls.Add(MyButton)
End Sub
(3)在需要显示控件的过程中,调用对控件的设置,并编写需要的事件处理过程,并与事件源进行关联。
NewButton()
AddHandler MyButton.Click, AddressOf MyButton_Click
MyButton_Click过程的代码如下:
Private Sub MyButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MessageBox.Show(“My Button”)
End Sub
在这里需要说明的就是在声明对象变量是也可以添加WithEvents关键字来声明,这时需要注意的是不能在第三步使用AddHandler和AddressOf语句将事件处理过程与事件源进行关联,而要采用Handles子句进行关联,或者通过代码编辑器上方的两个下拉列表框进行选择,自动建立这个关联的框架。
【VB.NET】VB.NET窗体与控件问题的解答相关推荐
- VB根据窗体自动调整窗体内控件大小 注:实用,可以直接引用
代码如下: Option Explicit Private ObjOldWidth As Long '保存窗体的原始宽度 Private ObjOldHeight As L ...
- vb检测html事件,VB代码VB小程序:捕获 WebBrowser 控件的鼠标事件
49. 捕获 WebBrowser 控件的鼠标事件 VB 的网页浏览控件 WebBrowser 没有 MouseDown.MouseMove.MouseUp 等鼠标事件,要在程序中捕获这些事件,必须另 ...
- VB.net数据库编程中DataGrid控件的使用技巧
VB.net数据库编程中DataGrid控件的使用技巧 如何用同一个DataGrid显示不同的数据表:如何用DataGrid显示主表/明细表的内容:如何用DataGrid分页显示或编辑数据表的记录.这 ...
- VB.NET怎样开发自定义Windows控件
前言 Microsoft® Visual Basic® 的组件支持历来都是它的一大卖点,于是第三方软件开发商们纷纷开发出各种具有新功能性的可视控件 (也有少数非可视控件) 供 Visual Basic ...
- asp.net控件页面交互_ASP.NET Web窗体用户控件的基本交互
asp.net控件页面交互 I saw a recent question regarding .NET - Render User Control Logo on Postback and deci ...
- C# winform中一个类中如何调用另一个窗体的控件或方法
转载地址:http://blog.csdn.net/ichenqingyun/article/details/52622340 一种是创建窗体对象的方式,通过对象调用控件或方法 例如: Form1 f ...
- Winform中怎样跨窗体获取另一窗体的控件对象
场景 Winform中实现跨窗体获取ZedGraph的ZedGraphControl控件对象: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/de ...
- C#中子线程操作主线程中窗体上控件的方法
Demo this.listView1.Visible = true;this.listView1.BeginUpdate();this.listView1.EndUpdate(); //结束数据处理 ...
- C#窗体内控件大小随窗体等比例变化
一.首先定义全局变量 1 private float X;//当前窗体的宽度 2 private float Y;//当前窗体的高度 3 private bool IsFirst = true; 二. ...
最新文章
- 为什么选择数据分析师这个职业?
- 微处理器含有高速缓存和什么_天天说芯片,芯片到底是什么?
- js离焦事件_JavaScript中的事件
- SAP数据分析图形相关内容
- 用pkg给手机装linux,pkg-config的使用方法
- QT的QMutex类的使用
- layui根据name获取对象_layui表格行合并;解决侧边固定栏合并
- 《spring-boot学习》-01-初体验
- 效率低的日子怎么办?
- 二层交换机的安全方案与实施
- php整数型转字符串,php如何将整数转为字符串
- 怎么导出微信聊天的记录到Word
- DBA的主要工作是什么
- 面向对象开发期末复习概述(三)
- 球球大作战显示短信服务器出错,《球球大作战》新版本常见问题解决方案汇总...
- idea 有时提示找不到类或者符号
- PyQt5中的按钮2-QToolButton
- #父与子的编程之旅#第十三章
- 百度地图坐标增强现实 (雷达效果)附全国离线地图
- 通过腾讯会议实现录屏操作
热门文章
- NOIP2014 uoj20解方程 数论(同余)
- 《荒漠甘泉》4月21日
- MAC 修改文件夹以及子文件夹和子文件权限 以及 修改文件夹owner
- 使用SpringMVC模拟文件上传与下载案例
- Vue生命周期与自定义组件
- php二进制加密_怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
- 计算机教师专业发展规划,信息技术教师成长规划_信息技术教师专业成长浅谈...
- pythonplotline_带误差条的python绘图线,pythonplotlinewitherrorbar
- http://mirrors.aliyuncs.com/centos/7/extras/x86_64/repodata/repomd.xml: [Errno 12] Timeout on http:/
- 整理加解释:以太网、快速以太网、千兆以太网和万兆以太网分别的概念和区分 大详解