第2章 使用窗体控件
课堂练习:为控件创建事件处理程序
5)传递给这个事件处理程序的第二个参数(e)的目的是什么?
答:参数 e 包含事件数据。它是一个 EventArgs 对象(实际不包含事件数据的基类) ,
或者是一个派生类(像 MouseEventArgs)的实例。要查看派生类的完整列表,请在 Visual
Studio .NET 帮助文档中使用短语“EventArgs 类”进行查找,然后点击链接转到“派生类”。
为 Click 事件创建一个事件处理程序。
3) 上面的双击动作为什么创建了一个 Click 事件处理程序?
答:当在设计视图中双击一个控件时,IDE 会自动为默认事件创建一个事件处理程序。
课堂练习:创建和使用 ToolBar 控件
8)为什么不能向 ToolBar 按钮添加图像呢?
答:ToolBar 控件将 ImageList 控件作为图像源。使用 ToolBar 控件的 ImageList 属性
指定 Toolbar 将从哪个 ImageList 控件获取图像。
13)运行应用程序。单击工具栏按钮时有事情发生吗? 必须处理什么事件以响应单击
ToolBar 按钮?
答 : ToolBar 的 ButtonClick 事 件 用 来 处 理 ToolBar 按 钮 的 单 击 。
ToolBarButtonClickEventArgs 用来确定单击了哪个按钮。
课堂练习:在运行时添加和移除控件
添加新控件
6) 为什么 decimalCheckBox 出现在 GroupBox1 控件的左上角?
答:控件位置属性的默认坐标 X 和 Y 的值均为零。
课堂练习:在运行时更新菜单
使用另一个 MainMenu
9) 什么时候能在一个应用程序中使用多个 MainMenu 控件?
答: 使用
在应用程序的上下文改变或者应用程序有多种状态时, (显示) 多个 MainMenu
对象会很有帮助。
将一个 ContextMenu 分配给一个控件。
5) 如何找出哪个控件与 ContextMenu 有关联?
答:ContextMenu.SourceControl 属性获取显示快捷方式菜单的控件。
找出与 ContextMenu 关联的控件
6) 在运行时用 MenuItem 对象的什么方法添加菜单项?
答:Add 方法。
在运行时添加菜单项。
6)在“File”菜单中有向用户显示以前打开的文件的方法吗?
答:可以使用菜单项的 Checked 属性来指出什么时候选中菜单项。通过每次单击该属
性在属性值 on 和 off 之间切换,并且在应用程序中添加适当的代码,这样就可以使菜单项
执行起来像一个单选按钮。
习题解答
1. 在窗体 Form1 中有按钮 Button1, 以下那个 Click 事件处理程序可以关闭该窗体?
a) Form1.Close();
b) this.Close();
c) Button1.Close();
d) me.Close();
答:B
2. 在状态栏 statusBar1 上创建一个带面板并显示"Panel 1",可以用程序:
a)
panel1.Text = "Panel 1";
statusBar1. AddPanel(panel1);
b)
StatusBarPanel panel1 = new StatusBarPanel();
panel1.Text = "Panel 1";
statusBar1.AddPanel(panel1);
c)
panel1.Text = "Panel 1";
statusBar1.Panels.Add(panel1);
d)
StatusBarPanel panel1 = new StatusBarPanel();
panel1.Text = "Panel 1";
statusBar1.Panels.Add(panel1);
答:D
3. 在窗体中,如何在运行时添加一个按钮?
a)
Button Button1;
Button1=new Button();
Button1.Text="New button";
this.Controls.Add(Button1);
b)
Button Button1;
Button1=new Button("New button");
this.Controls.Add(Button1);
c)
Button Button1;
Button1=new Button();
Button1.Text="New button";
this.AddButton(Button1);
d)
Button Button1;
Button1=new Button("New button");
this.AddButton(Button1);
答:A
4. 以下那段代码可以给 button1 创建一个上下文菜单
a)
Menu m=new Menu();
m.MenuItems.Add("menu1");
this.button1.ContextMenu=m;
b)
ContextMenu m=new ContextMenu();
m.MenuItems.Add(new ContextMenu("menu1"));
this.button1.ContextMenu=m;
c)
ContextMenu m=new ContextMenu();
m.MenuItems.Add("menu1");
this.button1.ContextMenu=m;
d)
Menu m=new Menu();
m.MenuItems.Add(new ContextMenu("menu1"));
this.button1.ContextMenu=m;
答:C
5. 窗体有 TextBox 控件 textBox1 及 ErrorProvider 控件 errorProvider1。以下那段代码可
以在 textBox1 中不是整数时显示一个错误消息?
a)
try
{
int x = Int32.Parse(textBox1.Text);
errorProvider1.SetError(textBox1, "");
}
catch
{
errorProvider1.SetError(textBox1,"需要整数");
}
b)
try
{
int x = Int32.Parse(textBox1.Text);
errorProvider1.ClearError();
}
catch
{
errorProvider1.SetError(textBox1,"需要整数");
}
c)
try
{
int x = Int32.Parse(textBox1.Text);
errorProvider1.SetError(textBox1, "");
}
catch
{
errorProvider1.GetError(textBox1,"需要整数");
}
d)
try
{
int x = Int32.Parse(textBox1.Text);
errorProvider1.ClearError();
}
catch
{
errorProvider1.GetError(textBox1,"需要整数");
}
答:A
6. 在.NET Framework 中事件是如何被引发的以及如何被处理的?
答:事件是由事件发送者(event sender)响应用户的操作或应用程序生成的事
件而引发的。委托(delegate)用来连接事件发送者(event sender)和处理事件的事
件接收者(event receiver)。
7. 在预定旅馆房间应用程序的用户界面中,想要让用户选择付款方式(信用卡、现金或
者支票)。请问可以使用什么控件在该应用程序中创建这个功能?
答:有多种方法可以给用户提供若干选项并只允许用户做出单一选择。 因为在
本例中只有三个选项,最简单的一种解决方法是在窗体上提供三个 RadioButton
控件。 对于涉及大量选项的情况,列表控件将是较好的选择(例如 ListBox 控件)。
8. 如何为工具栏按钮显示工具提示(tooltips)?
答: 并为 ToolBarButton 的 ToolTipText
通过打开 ToolBarButton 集合编辑器,
属性指定一个值,就可以为 ToolBar 控件上的按钮创建工具提示(tooltips)。
9. 当用户关闭一个对话框时,如何确定用户的操作?
答 : 父 窗 体 的 DialogResult 属 性 用 于 捕 获 关 闭 对 话 框 的 操 作 。 例 如 ,
DialogResult 可以用于确定 OpenFileDialog 是通过单击“打开”按钮关闭的,还
是通过单击“取消”按钮关闭的。
10. 如何使用 ErrorProvider 控件?
答:ErrorProvider 控件用于将无效数据错误消息与窗体上的控件相关联。要
使 用 ErrorProvider 控 件 , 打 开 控 件 的 Validating 事 件 处 理 程 序 , 并 使 用
ErrorProvider 控件的 SetError 方法指定控件和错误消息。在运行时,一个图标将
出现在指定的控件旁边。
11. 容器控件的什么属性用于访问 ControlCollection?使用这个属性可以访问
ControlCollection 类的哪些主要属性和方法?
答:容器控件的 Controls 属性用于访问 ControlCollection 对象。能够通过
Controls 属性访问的 ControlCollection 类的主要属性和方法包括 Count、Add 和
Remove。