基于c#的windows应用程序设计 课后答案.doc_第1页
基于c#的windows应用程序设计 课后答案.doc_第2页
基于c#的windows应用程序设计 课后答案.doc_第3页
基于c#的windows应用程序设计 课后答案.doc_第4页
基于c#的windows应用程序设计 课后答案.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章 Windows 窗体介绍习题解答1. 假定你已经设计好窗体Form1,如何显示一个这样的窗体?a)Form1.Show();b)Form1.Load();c)Form1 frm;frm=new Form1();frm.Show();d)Form1 frm;frm=new Form1();frm.Load();答:C2. 以下那种给窗体添加Load事件是正确的?a)添加以下方法private void Form1_Load(object sender, System.EventArgs e)b)添加以下方法private void Form1_Load(object sender, System.EventArgs e)并在InitializeComponent中添加以下语句this.Load += new System.EventHandler(this.Form1_Load);c)添加以下方法private void Form1_Load(object sender, System.EventArgs e) handles this.Loadd)添加以下方法private void Form1_Load(object sender, System.EventArgs e) handles this.Load并在InitializeComponent中添加以下语句this.Load += new System.EventHandler(this.Form1_Load);答:B3. 如何将控件停靠到窗体的右边?a)button1.Dock=DockStyle.Right;b)button1.Dock=Right;c)button1.Anchor=AnchorStyles.Right;d)button1.Anchor=Right;答:A4. 在MDI主窗体中,如何新建一个MDI子窗体?a)Form1 NewMdiChild = new Form1(); NewMdiChild.MdiParent = this;b)Form1 NewMdiChild = new Form1(); this.MdiChild=NewMdiChild;c)Form1.MdiParent = this;d)this.MdiChild= Form1;答:A5. 如何把活动的MDI 子窗体的标题设为活动子窗体?a)this.MdiChild.Caption=活动子窗体;b)this.MdiChild.Text=活动子窗体;c)this.ActiveMdiChild.Caption =活动子窗体;d)this.ActiveMdiChild.Text=活动子窗体;答:D6.列出一些选择Windows窗体而不是Web窗体的原因。答:更丰富的用户界面 更快的响应时间 对脱机环境有更好的支持7.什么是可视化继承?答:从现有的窗体继承窗体的过程叫做可视化继承。这就是说如果已经为一个不同于现在项目的项目设计了一个窗体,而这个窗体与现在的项目所需要的窗体类似,就可以继承这个窗体。也可以创建一个基窗体作为模板供以后使用。这是复制特定窗体主要功能的一种有用方法,这样的话就不必重新创建窗体。8.将控件锚定到窗体与将控件停靠到窗体之间的区别是什么?答:当一个控件被锚定到某个窗体(或其它容器)时,如果该窗体的大小被调整,该控件维持它与定位点位置(初始位置)之间的距离不变。而在停靠时,控件就会被停靠到容器的两个边缘。当容器的大小变化时,控件就会在水平或垂直方向调整大小。9.SDI 应用程序与 MDI应用程序之间的区别是什么?答:在SDI应用程序中,某一时刻仅能打开一个文档。在打开一个文档之前必须先关闭另一个文档。而在MDI应用程序中,可以同时打开多个文档。每一个文档在其自己的窗口中显示。10.当创建窗体时,必须从什么类继承才能生成一个Windows窗体?答:System.Windows.Forms.Form11.当关闭窗体时,要执行一些数字的合计,应该向哪个事件处理程序添加代码?答:代码应该被添加到Deactivated 事件处理程序中。12.当继承基窗体来创建新的窗体的时候,要重写在基窗体上的一个控件的方法,在基窗体中应该先做哪些准备工作?答:基窗体上控件的 Modifier 属性必须被设置为Protected 或者Public,以便在派生的窗体中重写其功能。第2章 使用窗体控件课堂练习:为控件创建事件处理程序5)传递给这个事件处理程序的第二个参数(e)的目的是什么?答:参数e包含事件数据。它是一个EventArgs 对象(实际不包含事件数据的基类),或者是一个派生类(像MouseEventArgs)的实例。要查看派生类的完整列表,请在Visual Studio .NET帮助文档中使用短语“EventArgs 类”进行查找,然后点击链接转到“派生类”。l 为Click 事件创建一个事件处理程序。3) 上面的双击动作为什么创建了一个Click 事件处理程序?答:当在设计视图中双击一个控件时,IDE会自动为默认事件创建一个事件处理程序。课堂练习:创建和使用ToolBar控件8)为什么不能向ToolBar 按钮添加图像呢?答:ToolBar 控件将ImageList 控件作为图像源。使用ToolBar 控件的ImageList 属性指定Toolbar 将从哪个ImageList 控件获取图像。13)运行应用程序。单击工具栏按钮时有事情发生吗? 必须处理什么事件以响应单击ToolBar按钮?答:ToolBar 的 ButtonClick事件用来处理ToolBar按钮的单击。ToolBarButtonClickEventArgs 用来确定单击了哪个按钮。课堂练习:在运行时添加和移除控件l 添加新控件6) 为什么decimalCheckBox 出现在GroupBox1控件的左上角?答:控件位置属性的默认坐标X和Y的值均为零。课堂练习:在运行时更新菜单l 使用另一个MainMenu9) 什么时候能在一个应用程序中使用多个 MainMenu 控件?答:在应用程序的上下文改变或者应用程序有多种状态时,使用(显示)多个 MainMenu 对象会很有帮助。l 将一个ContextMenu 分配给一个控件。5) 如何找出哪个控件与 ContextMenu 有关联?答:ContextMenu.SourceControl 属性获取显示快捷方式菜单的控件。l 找出与ContextMenu关联的控件6) 在运行时用MenuItem 对象的什么方法添加菜单项?答:Add 方法。l 在运行时添加菜单项。6)在“File”菜单中有向用户显示以前打开的文件的方法吗?答:可以使用菜单项的 Checked 属性来指出什么时候选中菜单项。通过每次单击该属性在属性值on和off之间切换,并且在应用程序中添加适当的代码,这样就可以使菜单项执行起来像一个单选按钮。习题解答1. 在窗体Form1中有按钮Button1, 以下那个Click 事件处理程序可以关闭该窗体?a) Form1.Close();b) this.Close();c) Button1.Close();d) me.Close();答:B2. 在状态栏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);答:D3. 在窗体中,如何在运行时添加一个按钮?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);答:A4. 以下那段代码可以给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;答:C5. 窗体有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,需要整数);答:A6. 在.NET Framework中事件是如何被引发的以及如何被处理的?答:事件是由事件发送者(event sender)响应用户的操作或应用程序生成的事件而引发的。委托(delegate)用来连接事件发送者(event sender)和处理事件的事件接收者(event receiver)。7. 在预定旅馆房间应用程序的用户界面中,想要让用户选择付款方式(信用卡、现金或者支票)。请问可以使用什么控件在该应用程序中创建这个功能?答:有多种方法可以给用户提供若干选项并只允许用户做出单一选择。因为在本例中只有三个选项,最简单的一种解决方法是在窗体上提供三个RadioButton控件。对于涉及大量选项的情况,列表控件将是较好的选择(例如 ListBox控件)。8. 如何为工具栏按钮显示工具提示(tooltips)?答:通过打开ToolBarButton 集合编辑器,并为ToolBarButton的ToolTipText 属性指定一个值,就可以为ToolBar控件上的按钮创建工具提示(tooltips)。9. 当用户关闭一个对话框时,如何确定用户的操作?答:父窗体的DialogResult 属性用于捕获关闭对话框的操作。例如,DialogResult可以用于确定OpenFileDialog是通过单击“打开”按钮关闭的,还是通过单击“取消”按钮关闭的。10. 如何使用ErrorProvider控件?答:ErrorProvider控件用于将无效数据错误消息与窗体上的控件相关联。要使用ErrorProvider控件,打开控件的Validating 事件处理程序,并使用ErrorProvider控件的SetError方法指定控件和错误消息。在运行时,一个图标将出现在指定的控件旁边。11. 容器控件的什么属性用于访问ControlCollection?使用这个属性可以访问ControlCollection 类的哪些主要属性和方法?答:容器控件的Controls属性用于访问ControlCollection 对象。能够通过Controls属性访问的ControlCollection 类的主要属性和方法包括Count、Add和Remove。第3章 生成控件习题解答1. 以下那段代码可以定义一个控件使得该控件包含一个TextBox和Buttona) public class MyControl: UserControlpublic MyControl()TextBox textBox1=new TextBox();Button button1=new Button();button1.Top=textBox1.Height;this.Controls.Add(textBox1);this.Controls.Add(button1);b)public class MyControl: UserControlTextBox textBox1=new TextBox();Button button1=new Button();button1.Top=textBox1.Height;this.Controls.Add(textBox1);this.Controls.Add(button1);c)public class MyControl: TextBox,Buttonpublic MyControl()TextBox textBox1=new TextBox();Button button1=new Button();button1.Top=textBox1.Height;this.Controls.Add(textBox1);this.Controls.Add(button1);b)public class MyControl: TextBox,ButtonTextBox textBox1=new TextBox();Button button1=new Button();button1.Top=textBox1.Height;this.Controls.Add(textBox1);this.Controls.Add(button1);答:A2. 在下面的代码片段中,属性窗口能将MyBackColor属性显示在外观类别中。a)public class UserControl1 : System.Windows.Forms.UserControlAppearancepublic Color MyBackColorgetreturn this.BackColor;setthis.BackColor=value;b)public class UserControl1 : System.Windows.Forms.UserControlAppearancepublic Color MyBackColor;c)public class UserControl1 : System.Windows.Forms.UserControlCategory(Appearance)public Color MyBackColorgetreturn this.BackColor;setthis.BackColor=value;d)public class UserControl1 : System.Windows.Forms.UserControlCategory(Appearance)public Color MyBackColor;答:C3. 在Microsoft Internet Explorer中,如何使用Windows窗体控件? 假定ControlLibrary1.dll文件位于和HTML页同样的虚拟目录中并且包含控件ControlLibrary1.myControl.a)b)c)d)答:A4. 可以用以下的方法定义一个需要License的控件.a)LicenseProviderAttribute(typeof(LicFileLicenseProvider)public class UserControl1 : System.Windows.Forms.UserControlpublic UserControl1()/other methods.b)LicenseProviderAttribute(LicFileLicenseProvider)public class UserControl1 : System.Windows.Forms.UserControlprivate License license = null;public UserControl1()license = LicenseManager.Validate(typeof(UserControl1), this);/other methods.c)LicenseProviderAttribute(typeof(LicFileLicenseProvider)public class UserControl1 : System.Windows.Forms.UserControlpublic UserControl1()/other methods.d)LicenseProviderAttribute(typeof(LicFileLicenseProvider)public class UserControl1 : System.Windows.Forms.UserControlprivate License license = null;public UserControl1()license = LicenseManager.Validate(typeof(UserControl1), this);/other methods.答:D5. 定制了一个TextBox后要控制只有满足特定条件的字符串可以出现该TextBox中.a)public class MyTextBox : System.Windows.Forms.TextBoxpublic override string Textgetreturn base.Text;setif(IsValid(value)base.Text = value;return;base.Text = value;return;public bool IsValide(string str)/return true if str is valid/return false if str is invalidb)public class MyTextBox : System.Windows.Forms.TextBoxpublic string Textgetreturn base.Text;setif(IsValid(value)base.Text = value;return;base.Text = value;return;public bool IsValide(string str)/return true if str is valid/return false if str is invalidc)public class MyTextBox : System.Windows.Forms.TextBoxpublic override string Textgetreturn base.Text;setbase.Text = value;public bool IsValide(string str)/return true if str is valid/return false if str is invalidd)public class MyTextBox : System.Windows.Forms.TextBoxpublic string Text;public bool IsValide(string str)/return true if str is valid/return false if str is invalid答:A6. 区别复合控件和自定义控件的区别。答:可以合并现有的控件来生成复合控件。当需要使用多个控件的复杂功能时,就需要创建复合控件。如果不想合并或者扩展现有控件,则可以选择创建自定义控件。自定义控件通过在OnPaint 事件中调用GDI+ Graphics对象来显示用户界面元素。自定义控件通常派生于System.Windows.Forms.Control基类。7. 如何测试控件?答:1) 在同一个项目中创建一个新窗体。2) 向工具箱中添加控件。3) 从工具箱中向窗体添加控件。8. 什么是属性特性?答:特性是将设计时功能绑定到组件的粘合剂。属性特性允许在设计时指定属性的行为。属性特性允许对Visual Studio .NET环境属性窗口中的自定义属性指定分组选项、属性的默认值和自定义属性的自定义编辑器。9. 列出在Visual Studio .NE中生成的一些属性特性。答:BrowsableCategoryDescriptionDefaultPropertyDefaultValueTypeConverterEditorRefreshProperties10. 什么是扩展程序?答:扩展项提供者向其它控件添加属性。一个扩展项提供者的例子是ToolTip控件。在向窗体添加ToolTip控件之前,窗体上控件的ToolTip属性是无效的。11. 被许可的控件中的LicenseManager和LicenseProvider的用途是什么?答:LicenseManager类负责在运行时和设计时验证注册控件。LicenseProvider类中放置自定义验证代码。第4章 在Windows窗体应用程序中使用数据习题解答1. 如何填充DataSeta)SqlDataAdapter MyDataAdapter = new SqlDataAdapter();SqlCommand mySelectSQLCommand=new SqlCommand();mySelectSQLCommand.CommandText = SELECT * FROM authors;MyDataAdapter.SelectCommand = mySelectSQLCommand;DataSet DS = new DataSet();MyDataAdapter.Fill(DS);b)SqlConnection MyConnection = new SqlConnection(server=(local);database=pubs;UID=myUser;PWD=myPassword;);SqlDataAdapter MyDataAdapter = new SqlDataAdapter();SqlCommand mySelectSQLCommand=new SqlCommand();mySelectSQLCommand.CommandText = SELECT * FROM authors;mySelectSQLCommand.Connection = MyConnection;MyDataAdapter.SelectCommand = mySelectSQLCommand;DataSet DS = new DataSet();MyDataAdapter.Fill(DS);c)SqlConnection MyConnection = new SqlConnection(server=(local);database=pubs;UID=myUser;PWD=myPassword;);SqlCommand mySelectSQLCommand=new SqlCommand();mySelectSQLCommand.CommandText = SELECT * FROM authors;MyConnection.SelectCommand = mySelectSQLCommand;DataSet DS = new DataSet();MyConnection.Fill(DS);d)SqlConnection MyConnection = new SqlConnection(server=(local);database=pubs;UID=myUser;PWD=myPassword;);MyDataAdapter.CommandText = SELECT * FROM authors;MyDataAdapter.Connection = MyConnection;DataSet DS = new DataSet();MyDataAdapter.Fill(DS);答:B2. 下面的代码添加一条新纪录到数据集中(DS是一个DataSet):a)DataRow dr = DS.Tables0.NewRow();drField1 = New Book;drField2 = business;DS.Tables0.Rows.Add(dr);b)DataRow dr = DS.NewRow();drField1 = New Book;drField2 = business;DS.Rows.Add(dr);c)DataRow dr = NewRow();drField1 = New Book;drField2 = business;DS.Tables0.Rows.Add(dr);d)DataRow dr = DS.NewRow();drField1 = New Book;drField2 = business;DS.Rows.Add(dr);答:A3. 加载表架构到一个新数据集中a) DataSet thisDataSet = new DataSet(); string filename=mySchema.xml; System.IO.FileStream myFileStream = new System.IO.FileStream (filename,System.IO.FileMode.Open); System.Xml.XmlTextReader myXmlTextReader= new System.Xml.XmlTextReader(myFileStream); thisDataSet.ReadXmlSchema(myXmlTextReader); myXmlTextReader.Close();b) DataSet thisDataSet = new DataSet(); string filename=mySchema.xml; System.IO.FileStream myFileStream = new System.IO.FileStream (filename,System.IO.FileMode.Open); System.Xml.XmlTextReader myXmlTextReader= new System.Xml.XmlTextReader(myFileStream); thisDataSet.ReadXml (myXmlTextReader); myXmlTextReader.Close();c) DataSet thisDataSet = new DataSet(); string filename=mySchema.xml; thisDataSet.ReadXmlSchema(filename, SchemaOnly); myXmlTextReader.Close();d) DataSet thisDataSet = new DataSet(); string filename=mySchema.xml; thisDataSet.ReadXml (filename, SchemaOnly); myXmlTextReader.Close();答:A4. 绑定DataSet ds的表customers的custName列到控件textBox1上a) textBox1.DataBindings.Add(new Binding (Text, ds, customers.custName);b) textBox1.DataBindings.Add(ds, customers.custName);c) textBox1.Bindings(new Binding (Text, ds, customers.custName);d) textBox1.Bindings.Add(ds, customers.custName);答:A5. 数据库中有一个性别字段,其值为1,0。但要控制绑定的TextBox textBox1显示为有(表示1),无(表示0)。 (b为Binding)a)b.Format += new ConvertEventHandler(this.fun1);textBox1.DataBindings.Add(b);private void fun1(object sender, ConvertEventArgs convertArgs)convertArgs.Value = (int)(convertArgs.Value)=1?是:无;return;b)b.Parse += new ConvertEventHandler(this.fun1);textBox1.DataBindings.Add(b);private void fun1(object sender, ConvertEventArgs convertArgs)convertArgs.Value = (int)(convertArgs.Value)=1?是:无;return;c)b.Format += new ConvertEventHandler(this.fun1);textBox1.DataBindings.Add(b);private void fun1(object sender, ConvertEventArgs convertArgs)convertArgs.Value = (int)(convertArgs.Value)=0?是:无;return;d)b.Parse += new ConvertEventHandler(this.fun1);textBox1.DataBindings.Add(b);private void fun1(object sender, ConvertEventArgs convertArgs)convertArgs.Value = (int)(convertArgs.Value)=0?是:无;return;答:A6. Connection对象和Command对象有什么区别?答:应用程序使用Connection对象连接数据库。可以使用Command对象直接在连接的环境中访问数据库中的数据。Command对象使用SQL语句或者存储过程来检索数据。命令通过连接进行传输,以流的形式返回结果集,流可以被DataReader读取或被写入DataSet对象。7. DataSet和DataAdapter有什么区别?答:DataSet在断开连接的缓存中存储数据。DataSet的结构与关系数据库的结构相似;它公开由表、行和列组成的分层对象模型。DataAdapter对象作为DataSet和数据源之间检索或保存数据的桥梁。DataAdapter类表示一组数据库命令和可用作填充DataSet和更新数据源的数据库连接。8. 如何访问类型化数据集和非类型化数据集中的表和列?答:类型化数据集PubsDataSet.Titles;非类型化数据集PubsDataSet.Tables(“Titles”);9. 如何生成新的数据库架构?答:在“项目”菜单中,单击“添加新项”。打开相应的文件夹,然后双击XML架构,添加架构。你的项目中就会添加XML架构(.xsd)文件。10. ReadXML和WriteXML方法的功能是什么?答:可以使用DataSet对象的ReadXml方法从XML文件中加载数据到数据集。当使用这个方法时,可以从只包含XML数据的文件中或是从既包含XML数据又包含内联架构的文件中,加载数据。使用DataSet对象的WriteXml方法从数据集中把数据和架构信息写入到文件和流。11. 什么是CurrencyManager?答:CurrencyManager用来保持数据绑定控件与数据源同步。CurrencyManager是很重要的,因为数据源(例如数据集中的表)不跟踪当前已选中的行。需要一个中间对象来知道数据源中当前选中行的位置,并且此中间对象能够在位置改变时通知数据绑定控件。这个中间对象就是CurrencyManager对象。12. 在应用程序中调用XML Web service的主要步骤是什么?答:在应用程序中调用XML Web service的主要步骤是: 生成调用XML Web service方法的代理。 实例化代理。 调用你的应用程序所需的XML Web service方法。 13. 描述两种生成XML Web service代理的方式。答:在Visual Studio .NET中添加Web引用和使用WSDL.exe实用工具。14. 列出三种保持程序设置的技术。答:三种保持程序设置的技术包括: 使用DataSet对象 使用读/写对象 使用序列化 第5章 与托管对象交互操作课堂练习:调用Win32 APIl 解决Win32PlaySound_Error类的PlaySound_DllImport 函数中的错误。 打开Win32PlaySound_ErrorClass 文件,查看PlaySound_DllImport 函数。在函数中有一个错误。你可以试着测试它以确认该错误。该错误是什么呢?答:函数将ExactSpelling 显示设置为True;然而,EntryPoint被设置为PlaySound。但是,在Winmm.dll中,函数PlaySound并不存在;只有 PlaySoundA (Ansi) 和PlaySoundW (Unicode)存在。要纠正这个错误,将 ExactSpelling设置为False。另一个纠正此错误的方法是将EntryPoint显示设置为PlaySoundW。习题1. 运行库为每个COM对象创建几个RCWa)2b)1c)0d)COM对象上的引用数目答:B2. 在C#中,如果要使用API MessageBox,可以用:a)DllImport(user32.dll)public extern int MessageBox(int hWnd, String text, String caption, uint type);b)DllImport(user32.dll)public static int MessageBox(int hWnd, String text, String caption, uin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论