演练:调试 Windows 窗体
Windows 窗体是最常见的托管应用程序之一。 Windows 窗体创建标准的 Windows 应用程序。 你可以完成此演练使用 Visual Basic 中, C#,或 c + +。
首先,您必须关闭任何打开的解决方案。
准备此次演练
- 如果已打开某个解决方案,请将其关闭。 (在文件菜单中,选择关闭解决方案。)
创建新的 Windows 窗体
接下来,您将创建一个新的 Windows 窗体。
若要创建用于本演练中的 Windows 窗体
上文件菜单中,选择新建然后单击项目。
此时将出现“新建项目”对话框。
在项目类型窗格中,打开Visual Basic, Visual C# ,或Visual c + + 节点,然后
Visual Basic 或 Visual C#,选择Windows 桌面 > Windows 窗体应用。
对于 Visual c + + 中,选择Windows 桌面应用程序。
在中名称框中,为项目指定唯一名称 (例如,Walkthrough_SimpleDebug)。
单击 “确定”。
Visual Studio 创建一个新项目,并在 Windows 窗体设计器中显示新窗体。 有关详细信息,请参阅Windows 窗体设计器。
上视图菜单中,选择工具箱。
随即将打开工具箱。 有关详细信息,请参阅工具箱。
在工具箱中,单击按钮控件,将控件拖到窗体设计图面。 将按钮拖动窗体上。
在工具箱中,单击文本框中控件,将控件拖到窗体设计图面。 Drop文本框中窗体上。
在窗体设计图面上,双击该按钮。
这会转到代码页。 光标应位于
button1_Click。在
button1_Click函数中,添加以下代码:C#复制textBox1.Text = "Button was clicked!";
C++复制textBox1->Text = "Button was clicked!";
在“生成”菜单上,选择“生成解决方案”。
该项目应顺利生成,没有错误。
调试窗体
现在,已准备好开始调试。
若要调试在本演练中创建的 Windows 窗体
在源窗口中,单击你添加的文本的同一行的左侧的空白:
C#复制textBox1.Text = "Button was clicked!";
C++复制textBox1->Text = "Button was clicked!";
出现一个红点并且该行上的文本突出显示为红色。 红点表示一个断点。 有关详细信息,请参见断点 当您在调试器下运行该应用程序时,此调试器将在命中该代码时在该位置中断执行。 然后您可以查看应用程序的状态并调试它。
备注
此外可以右键单击任意行的代码中,指向断点,然后单击插入断点该行上添加断点。
在“调试”菜单上选择“启动”。
Windows 窗体开始运行。
在 Windows 窗体中,单击添加按钮。
在 Visual Studio 中,这将转到行上的代码页设置了断点的位置。 该行将用黄色突出显示。 现在,可以查看应用程序中的变量并控制其执行。 你的应用程序现已停止执行,等待您的操作。
上调试菜单中,选择Windows,然后观看,然后单击Watch1。
在中监视 1窗口中,单击某一空行。 在中名称列中,键入
textBox1.Text(如果使用 Visual Basic 或 Visual C#) 或textBox1->Text(如果使用 c + +),然后按 ENTER。监视 1窗口会显示此变量的值与引号中:
""在“调试”菜单上选择“逐语句”。
TextBox1.Text 的更改的值监视 1窗口:
Button was clicked!上调试菜单中,选择继续以继续进行调试您的程序。
在 Windows 窗体中,再次单击按钮。
Visual Studio 将中断再次执行。
单击表示断点的红点。
这将在代码中移除该断点。
在“调试”菜单上,选择“停止调试”。
附加到 Windows 窗体应用程序进行调试
在 Visual Studio 中,可以将调试器附加到正在运行的进程上。 如果使用 Express Edition,不支持此功能。
若要将附加到 Windows 窗体应用程序进行调试
在上述步骤中创建的项目中,单击左侧边距处来再一次所添加的行处设置断点:
C#复制textBox1.Text = "Button was clicked!";
C++复制textBox1->Text = "Button was clicked!";On the Debug menu, select Start Without Debugging.
The Windows Form starts running under Windows, just as if you had double-clicked its executable. The debugger is not attached.
On the Debug menu, select Attach to Process. (This command is also available on the Toolsmenu.)
The Attach to Process dialog box appears.
In the Available Processes pane, find the process name (Walkthrough_SimpleDebug.exe) in the Process column and click it.
Click the Attach button.
In your Windows Form, click the one and only button.
The debugger breaks execution of the Windows Form at the breakpoint.
See Also
- Debugging Managed Code
- Debugger Security
- from: https://docs.microsoft.com/zh-cn/visualstudio/debugger/walkthrough-debugging-a-windows-form?view=vs-2017
演练:调试 Windows 窗体的更多相关文章
- 如何:对 Windows 窗体控件进行线程安全调用
http://msdn.microsoft.com/zh-cn/library/ms171728(VS.90).aspx http://msdn.microsoft.com/zh-cn/library ...
- Windows 窗体启动和关闭的事件顺序
本文系转载学习. 对于关注对 Windows 窗体应用程序中引发的每个事件按次序进行处理的开发人员来说,事件引发的顺序特别重要.当某种情况需要小心处理事件时(如重绘窗体的某些部分时),必须知道事件在运 ...
- C#开发Windows窗体应用程序的步骤
使用C#开发应用程序时,一般包括创建项目.界面设计.设置属性.编写程序代码.保存项目.程序运行等6个步骤. 1.创建项目 在Visual Studio2017开发环境中选择“文件”→“新建”→“项目” ...
- 最佳实践扩展Windows窗体DataGridView控件 .net 4.5 附示例代码
Windows窗体DataGridView控件的性能调优.net 4.5 在处理大量数据时, DataGridView 控制可以消耗大量的内存开销,除非你仔细地使用它. 在客户有限的内存,你可以避 ...
- 创建可按比例调整的布局的 Windows 窗体
能够正确调整大小的窗体可以提高您的用户界面的易用性. 此演练演示了如何创建当用户调整窗体大小时按比例调整的布局. 您将使用 TableLayoutPanel 控件实现一个接收联系人信息的数据输入窗体. ...
- Windows 窗体设计器(Windows Forms Designer)入门
Visual Studio 2010 更新:2010 年 9 月 Windows 窗体设计器提供多个用于生成 Windows 窗体应用程序的工具. 本演练阐释如何使用设计器提供的各种工具生成应用程 ...
- C#创建、安装、卸载、调试Windows Service(Windows 服务)的简单教程
前言:Microsoft Windows 服务能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这 ...
- Windows服务二:测试新建的服务、调试Windows服务
一.测试Windows服务 为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点.像其他应用程序一样,Windows服务也是在Program.cs的Main ...
- C#学习笔记-Windows窗体基本功能(Login登录界面)
本菜鸟由于实习工作的原因,不得不快速接触C#语言,刚刚好又要做毕业设计,所以就通过自学的方式一举两得地完成这两件事情. 故此文字记录或代码中的各种文件名之类均是以毕业设计为模版记录的,看着不方便之处请 ...
随机推荐
- awk命令的用法实战
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAn8AAADvCAIAAAAM1SXGAAAgAElEQVR4nO2dz8s125XXHx9oTXMHUZ
- nethogs命令执行报异常的解决方法
- python 对象存储///对象序列化
如果你有写数据来之不易,并且希望每次都可以方便的读取,那么存储为一个对象是一个很不错的解决方法 方法一. import pickle #首先要导入包 dics={'a':4,'b':5,'c':6}# ...
- JSP页面分页显示数据
效果如上图所示!最多显示10条:完整jsp和后台代码如下: <%@ page contentType="text/html;charset=UTF-8" %> < ...
- javascript记忆
Math.round()和ToFixed() Math.round(1.6)=2 Math.round(-1.4)=-1 var k = 1.74.toFixed(1), m = 1.75.toFix ...
- dubbo spring bean id冲突
service-security-provider应用有provider和consumer配置文件 其中secutrity-consumer引用两个服务 <dubbo:reference int ...
- Nginx 关闭防火墙
关闭防火墙 1) 重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后失效 开启: service ...
- HTML文本结构及常用标签
一.什么是HTML? HTML:超文本标签语言 (Hyper Text Markup Language) www万维网的描述性语言. XHTML指可扩展超文本标记语言(标识语言)(EXtensible ...
- python 数据结构之归并排序
def merger_sort(alist): if len(alist) <= 1 : return alist num=int(len(alist)/2) left=merger_sort( ...
- raid 搭建
RAID几种常见的类型 RAID类型 最低磁盘个数 空间利用率 各自的优缺点 级 别 说 明 RAID0 条带卷 2+ 100% 读写速度快,不容错 RAID1 镜像卷 2 50% 读写速度一般,容错 ...