C-sharp建立步骤
csharp单选框分组
csharp单选框分组1. 简介在C#编程语言中,单选框(RadioButton)是一种常用的用户界面控件,它允许用户从多个选项中选择一个。
单选框通常与分组搭配使用,以便对选项进行逻辑上的分组和管理。
本文将介绍如何在C#中创建和使用单选框分组。
2. 创建单选框在C#中,可以使用Windows Forms或WPF来创建用户界面。
无论是哪种方式,创建单选框都是类似的。
2.1 Windows Forms在Windows Forms中,可以通过拖放控件或者编程方式来创建单选框。
2.1.1 拖放控件打开Visual Studio的Windows Forms应用程序项目,在工具箱中找到RadioButton控件,并将其拖放到窗体上。
重复此步骤以添加更多的单选框。
2.1.2 编程方式using System.Windows.Forms;public class Form1 : Form{public Form1(){InitializeComponent();CreateRadioButtons();}private void CreateRadioButtons(){RadioButton radioButton1 = new RadioButton();radioButton1.Text = "Option 1";radioButton1.Location = new Point(10, 10);RadioButton radioButton2 = new RadioButton();radioButton2.Text = "Option 2";radioButton2.Location = new Point(10, 30);// 将单选框添加到窗体上Controls.Add(radioButton1);Controls.Add(radioButton2);}}2.2 WPF在WPF中,可以使用XAML或者编程方式来创建单选框。
2024年-Csharp基础知识PPT学习课件(精编)
A=b=c; A:b?a:c>d?c:d;
34
2.3.2
34
C#语言的基本原理 2
内容:
• C#程序的基本原理 • C#预定义类型 • 编写表达式 • 条件语句 • 循环语句
35
条件语句
2.4
Microsoft ©
• 条件语句可以根据布尔表达式的值,有选择性的
执行程序的某一部分
• 在C# 中的条件语句有 if 和 switch 两种 • if 适合两个分支判断 • switch 适合多个分支判断
• 作用:通过声明变量,可以在内存中为该变量申 请存储空间
• 语法:
类型 变量名;
int numberOfVisitors;
string name;
19
19
声明并初始化变量
Microsoft ©
第 2步:初始化变量
• 作用:给变量分配初值 • 语法:
变量名 = 初值;
string name; name = “Grizzly”; // 声明和初始化一步完成
端对齐
25
25
创建并使用枚举类型
2.2.5
Microsoft ©
• 枚举类型是一组被命名的数字常量,即:一个枚
举类型中包含了多个相关的数字常量,且每个常
量都被赋予了一个容易记忆的“名字”
• 使用enum关键字创建枚举类型
enum Weather { Sunny, Cloudy, Rain, Snow, fog
Console代表标准输出设备--- 屏幕,它属于System命名空间 WriteLine方法是Console类的方法。访问类或对象的方法使用
点取符.来完成。 字符串用双引号“ ”表示 字符串“Hello,World”是WriteLine方法的参数,表示屏幕输出
csharp基本概念 -回复
csharp基本概念-回复C#(C Sharp)是一种通用的、面向对象的编程语言,由微软公司于2000年推出。
作为一门现代化的编程语言,C#具有许多强大的功能和特性,它的语法简洁易懂,易于学习和使用。
本文将通过回答以下问题,逐步介绍C#的基本概念:1. 什么是C#?2. C#的发展历史是什么?3. C#的特点和优点有哪些?4. 如何安装和设置C#环境?5. C#的基本语法是什么样的?6. C#的变量和数据类型有哪些?7. 如何定义和使用函数?8. 如何进行条件判断和循环?9. 如何操作数组和集合?10. C#的面向对象编程特性是什么?现在让我们逐步回答这些问题,深入了解C#的基本概念。
1. 什么是C#?C#是一种基于对象的编程语言,它以C和C++为基础,并引入了一些Java 的特性。
C#旨在提供一种安全、稳定和易于使用的编程语言,用于构建各种应用程序,包括桌面应用程序、Web应用程序和移动应用程序。
2. C#的发展历史是什么?C#最早于2000年发布,是微软公司为了支持其.NET平台而推出的语言。
C#的设计目标是在保留C和C++语言优点的同时,简化语法和提供更高级的特性。
随着.NET的不断发展,C#也在不断改进和更新。
3. C#的特点和优点有哪些?C#具有多种特点和优点,包括:- 简单易学:C#的语法简洁明了,结构清晰,易于学习。
- 安全性:C#提供了许多安全机制,包括类型安全和内存管理,减少了一些常见的编程错误。
- 跨平台性:C#可以在Windows、Mac和Linux等多个平台上运行,提供了一致的开发体验。
- 面向对象:C#是一种面向对象的语言,支持封装、继承和多态等概念,使得代码更加模块化和易于维护。
- 垃圾回收:C#采用自动垃圾回收机制,减少了手动内存管理的工作量。
4. 如何安装和设置C#环境?要安装和设置C#环境,需要进行以下步骤:- 下载和安装Visual Studio:Visual Studio是一种集成开发环境(IDE),可以用于开发C#应用程序。
C sharp 控件大全-文档资料
注意
可以在属性窗口设置属性,可以在代码中对属性进行设置。例如修改按钮背景 色,可以使用代码btnNew.BackColor=Color.Red; “&”号的使用。作为字符的前缀,通过Alt+相应的字符实现点击按钮的操作。例 如,btnNew.Text = “&Ok”; 一般使用默认的背景和前景控件颜色。
把按钮与DialogResult值DialogResult = DialogResult.OK;
单选按钮
使用RadioButton类封装,通常用来执行多选 一的操作。单选按钮通常分组使用,在一个组 中,只能有一个按钮处于选中状态。 单选按钮属性
除了Button中讨论的一些属性之外,单选按钮还比 较常用的属性还有:
在代码中通过Size属性设置控件大小
可以使用Bounds属性同时设置控件的位置和大小
btnNew.Bounds=new System.Drawing.Rectangle(10,10,100,100);
4)固定控件
使用Anchor属性使控件的位置相对于窗体某一边固定,改变窗体大小 时,控件的位置将会随之改变而保持这个相对距离不变。 使用属性窗口改变Anchor属性时,单击控件周围的上下左右的某个方 框使之变成深灰色,就表示控件相对于窗体这条边的距离固定 System.Windows.Forms命名空间中包含了一个枚举类型 AnchorStyles,其中定义了Anchor属性可以组合的16种不同属性值。 可以在代码中设置Anchor属性。
调整控件
对控件的调整,包括对齐、大小调整和间隔等等。 选中要调整的控件,使用“格式”菜单或是快捷菜单 中的命令或者工具栏上的格式按钮进行调整。在调整 控件的格式时,将按照基准控件对选择的多个控件进 行调整。 使用Ctrl键或Shift键选择多个控件,也可以拖动鼠标 选择一个控件范围,此时最先进入窗体的控件将作为 调整的基准控件。 被选中的控件中,基准控件周围是 白色方框,其他控件周围是黑色方框,如图。
Csharp进行xls文件操作方法
Csharp进行xls文件操作方法Excel对象微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象.下面我们简单介绍一下其中最重要,也是用得最多的四个对象。
(1) Application对象。
Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。
(2) Workbook对象。
Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。
(3) Worksheet对象。
Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4) Range对象。
Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
C#中的受管代码和非受管代码在.NET公用语言框架内运行的程序为受管代码。
受管代码在程序中所有类型都受到严格检查,没有指针,对内存的管理完全由运行系统控制。
受控状态下,编写程序更为容易,且更少出错,我们可以花更多的时间在解决实际问题上而不是在计算机语言问题上。
相对而言,那些在.NET框架外运行的程序为非受管代码。
比如:COM组件、ActiveX组件、Win32 API函数、指针运算等。
C#编程中在某些特定情况下,需要运用非受管代码,例如,要利用一个成熟的COM组件,或者调用一个API函数,或者用指针去编写实时/高效程序等。
Visual C#中调用Excel的COM组件一个.NET组件事实上是一个.NET下的DLL,它包含的不仅是运行程序本身,更重要的是包含这个DLL的描述信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。
这些COM组件都是非受管代码,要在Visual C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的.NET组件。
所以在用Visual C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。
CSharp_入门教程
C#,深入浅出全接触目录表一、什么是C#?二、Java与C#三、C#的主要特征四、安装运行环境五、C#编辑器六、C#的程序结构七、C#和名称空间八、C#中一个经典例程的编写与编译九、C#编程实战演习ABC1、使用Visual Studio .NET编写C#程序2、使用Visual C#创建Windows应用程序3、创建C#类库(Dll)一、什么是 C#?C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能。
同时,由于是Microsoft公司的产品,它又同 VB一样简单。
对于web开发而言,C#象 Java,同时具有Delphi的一些优点。
Microsoft宣称:C#是开发.NET框架应用程序的最好语言。
二、Java与 C#要学习C#,不能不首先看一看Java语言。
相对于其他编程语音,Java有一个无庸置疑的优点:用户以及编译器第一次不必了解生成可执行代码的特定CPU细节。
Java引入了一个编译代码中间层,叫做字节代码,并使用一个虚拟抽象的机器,而不是一个真实的机器。
当Java 编译器结束了一个源文件的编译后,你所得到的不是可以立即在一个给定平台上运行的代码,而是可以在任何真实的平台上运行的字节代码,唯一的条件就是这个平台要理解和支持Java。
这些发展包含着一个文化的变革。
作为一个开发人员,你只需要确定Java虚拟机(JVM)提供的抽象层,不同的OS销售商负责执行代码层,从而将中立于平台的字节代码映射到主机平台的机构中。
在这种情况下,Java似乎是统一分布式计算机世界的领袖候选人了。
“编写一次,永远运行”(并且无论在哪里)一度成为Java诱人但却真实的口号。
那么为什么说Java只是“似乎”是一个好东西呢?跨平台理论的发展很好地证明了这一点。
我们看到,将Java代码从一个平台移植到另一个平台—Java这个语言最重要和最受吹捧的特点—并不象宣传的那样容易。
命名规范_C (Sharp)
命名规范_C(Sharp)1.命名规范a)类【规则1-1】使用Pascal规则命名类名,即首字母要大写。
【规则1-2】使用能够反映类功能的名词或名词短语命名类。
【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。
【规则1-4】自定义异常类应以Exception结尾。
【规则1-5】文件名要能反映类的内容,最好是和类同名。
b)类字段【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。
【规则2-2】类字段变量名前可加“_”前缀。
【规则2-3】坚决禁止在普通变量前加“m_”(这是VC老命名规则)。
c)方法【规则3-1】方法名采用Pascal规则,第一个字符要大写。
【规则3-2】方法名应使用动词或动词短语。
【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。
d)属性【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。
【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。
e)参数【规则5-1】参数采用camel规则命名,且首字符小写。
【规则5-2】使用描述性参数名称,参数名称应当具有最够的说明性。
【规则5-3】不要给参数加匈牙利语类型表示法的前缀。
【规则5-4】检查方法所有输入参数的有效性。
f)常量【规则6-1】只读常量使用Pascal命名规则,即首字母大写。
【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。
【规则6-3】枚举值从小到大顺序定义。
【规则6-4】静态字段或属性采用Pascal规则,即首字符大写。
g)接口【规则7-1】接口定义使用Pascal规则,且必须以大写“I”开头。
【规则7-2】接口名称要有意义,中间不要有下划线“_”等字符。
【规则7-3】如果类实现了接口,名称尽量和接口相同,只是省掉“I”字符。
h)事件【规则8-1】委托名称采用Pascal规则,即首字符大写。
CSharp编程攻略(封装)
/// </summary>
public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
{
return dal.GetListByPage( strWhere, orderby, startIndex, endIndex);
所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。
比如,猫的原型对象现在可以这样写,
function Cat(name,color){
=name;
this.color=color;
//}
#endregion BasicMethod
#region ExtensionMethod
#endregion ExtensionMethod
}
}
为了解决从原型对象生成实例的问题,Javascript提供了一个构造函数(Constructor)模式。
这时cat1和cat2会自动含有一个constructor属性,指向它们的构造函数。
alert(cat1.constructor == Cat); //true
alert(cat2.constructor == Cat); //true
Javascript还提供了一个instanceof运算符,验证原型对象与实例对象之间的关系。
}
我们现在就可以生成实例对象了。
var cat1 = new Cat("大毛","黄色");
串联机械臂运动学逆解csharp_概述及解释说明
串联机械臂运动学逆解csharp 概述及解释说明1. 引言1.1 概述:本文旨在给读者介绍串联机械臂运动学逆解在C#编程语言中的概念和实现方法。
机械臂是一种常见的工业自动化设备,其运动学逆解是指根据机械臂末端执行器的位置和姿态,计算出对应的关节变量值的过程。
C#作为一种流行且功能强大的编程语言,在机械臂控制领域也有广泛的应用。
本文将详细介绍机械臂运动学逆解方法及其在C#中的实现步骤和技巧。
1.2 文章结构:本文共分为五个主要部分。
引言部分目前正在撰写中。
第二部分将介绍串联机械臂运动学逆解以及C#编程语言的简介,并探讨它们之间的目标和应用场景。
接着,第三部分将深入探讨机械臂运动学逆解方法,包括正向运动学与逆向运动学的区别、常见的机械臂逆解算法介绍以及使用C#实现机械臂运动学逆解的步骤和技巧。
第四部分将介绍具体的程序实现过程和结果分析,包括编写C#程序进行机械臂运动学逆解的实现过程、实验设置和数据收集方法说明以及结果的分析与讨论。
最后,第五部分将对整篇文章进行总结并展望未来的研究方向。
1.3 目的:本文旨在为读者提供一个全面的了解串联机械臂运动学逆解在C#中的应用背景和实施步骤。
通过阅读本文,读者可以掌握机械臂运动学逆解方法的原理和各种常见算法,并且了解如何使用C#编程语言来实现这些方法。
同时,本文还将介绍一些相关实验设置和结果分析,以帮助读者更好地理解机械臂运动学逆解在工业自动化领域中的重要性和实际应用情况。
2. 串联机械臂运动学逆解csharp概述:2.1 机械臂的运动学逆解机械臂是一种能够模拟人类手臂运动的机器装置,广泛应用于工业自动化领域。
在进行自主操作时,机械臂需要根据给定的末端执行器位置和姿态来确定关节角度以实现所需的位置和姿态变化。
这个过程被称为机械臂运动学逆解。
机械臂的运动学逆解主要涉及确定每个关节角度,并通过控制这些关节来达到所需位置和姿态。
其中关节之间存在复杂的几何限制和约束条件,使得求解逆向运动学问题变得困难。
CSharp 语言定义文档 - 13 接口的定义与用法
13. 接口一个接口定义一个协定。
实现某接口的类或结构必须遵守该接口定义的协定。
一个接口可以从多个基接口继承,而一个类或结构可以实现多个接口。
接口可以包含方法、属性、事件和索引器。
接口本身不提供它所定义的成员的实现。
接口只指定实现该接口的类或结构必须提供的成员。
13.1 接口声明interface-declaration是用于声明新的接口类型的type-declaration(第 9.6 节)。
interface-declaration:attributes opt interface-modifiers opt partial opt interfaceidentifier variant-type-parameter-list opt interface-base opttype-parameter-constraints-clauses opt interface-body ;optinterface-declaration由以下内容组成:一组可选attributes(第 17 章),然后依次是一组可选interface-modifiers(第 13.1.1 节)、可选partial修饰符、关键字interface和用于命名接口的identifier、可选variant-type-parameter-list规范(第 13.1.3 节)、可选interface-base规范(第 13.1.4 节)、可选type-parameter-constraints-clauses规范(第 10.1.5 节)、interface-body(第 13.1.5 节),最后是一个分号(可选)。
13.1.1 接口修饰符interface-declaration可以根据需要包含一个接口修饰符序列:interface-modifiers:interface-modifierinterface-modifiers interface-modifierinterface-modifier:newpublicprotectedinternalprivate同一修饰符在一个接口声明中多次出现属于编译时错误。
CSharp打包安装
C#安装打包详解(基于VS2010自带的安装打包功能)第一部分:安装打包的基本知识:VS的打包功能比较有限,不过有一个思路可以实现,但是过程不是简单几句就可以说清楚的,关键是要明白msi打包的原理,我简单说一下思路:一、理论首先第一个界面,安装模式,你选择的是应该是一个ratioButton(两个按钮)的界面,这时你需要设置两个Button的lable和value,还有ButtonProperty,关键是ButtonProperty,必须全大写,这个属性值就是界面跳转的控制变量;然后是第二个界面,数据库参数,这时候是TextBox界面,同样设置lable 和value和Property最后剩下的就是编写CustomAction了,CustomAction中可以获取以上两步设置的Property的值,这样就可以在CustomAction中做安装数据库的处理了至于页面跳转,涉及到按钮事件的操作,VS中只有顺序事件,这时侯需要使用Orca来修改生成的Msi文件,在msi数据库中找到ControlEvent表,修改按钮的事件,达到页面跳转的目的要完成以上操作,需要对msi sdk和msi 数据库有相当的了解,我虽然用的wix,但是跟vs自带的一样都是针对msi installer sdk,原理都一样,区别是VS封装太过简单,感觉很多功能不好扩展,由于对VS打包没做过多的研究,也不知道VS下是否能有更好的方法。
二、实施一).创建部署项目1. 在“文件”菜单上指向“添加项目”,然后选择“新建项目”。
2. 在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。
在“名称”框中键入 setup1。
3. 单击“确定”关闭对话框。
4. 项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。
5. 在“属性”窗口中,选择 ProductName 属性,并键入信息管理系统。
Csharp 教程
6
C#概述及开发环境
1.1 高级语言介绍 1.2 Net与C#语言介绍 1.3 C#的历史和特点 1.4 .NET架构 1.5 .NET任务
8
1.1高级语言的分类
1、面向过程语言:Fortran、Cobol、 Pascal、C
0.1献给学习C#的人
多年以来,C#语言获得了许多拥护者,部分原因是它 的语法类似于C和Java,C#语言的清晰语法使其易于学 习,许多编程初学者都选择使用该语言
学习编程的最好方法就是“案例驱动”--知道为什么 要用这个知识点,才去学这个知识点,而不是盲目学习。
在学习编程过程中兴趣才是最好的老师,你见过学习好 的学生都有过通宵的经历,没有人去逼廹、要求他们, 只因无法抗拒编程的诱惑。有人可能会觉得编程太辛苦 了-但烈日下挥汗如雨地打球苦不苦?废寝忘食地玩游 戏的人苦不苦?他们自然乐在其中!同理,对于程序员 而言,通宵达旦地编程、调试并不是苦,而是一种享受。
33
相关知识
C#基本语法规则 C#注释
➢ 2种注释方法 ➢ 注释的目的
34
作业
P25 1-4
35
学时安排
建议6学时
37
类库(按领域划分)
基本类库(Base Class Library,BCL):输入/输 出、字符串操作、安全性管理、网络通信、 线程管理、文本管理
:数据和XML类 :Web服务和窗体 Windows窗体类:GUI应用程序开发
21
1.5 任务1:建立最简单C#程序
界面
目的 ➢了解Visual Studio 2008开发环境 ➢ 了解C#程序的一般构成 ➢ 了解编辑、运行一个C#程序的过程
C sharp 教程
Hello World 程序
描述代码的注释
//这是用 C# 编写的一个简单的 HelloWorld 程序
using System;
导入 System 命名空间
namespace Notepad {
声明命名空间 Notepad
class HelloWorld
声明 HelloWorld 类
{
static void Main() 程序入口点, Main 的返回类型为 void
第1章 C#与NET平台介绍 本章目标
了解.NET Framework 的结构 理解.NET Framework 的基本概念
CLR JIT CTS MSIL
了解 .NET Framework 命名空间 了解C#程序的基本结构
1 C#语言的由来
在过去的二十年里,C和C++已经成为在商业软件的开发领域中 使用最广泛的语言。它们为程序员提供了十分灵活的操作,不过 同时也牺牲了一定的开发效率。与VB等语言相比,同等级别的 C/C++应用程序往往需要更长时间来开发。由于C/C++语言的 复杂性,许多程序员都试图寻找一种新的语言,希望能在功能与 效率之间找到一个更为理想的权衡点。
单击“开始”“程序”“Microsoft Visual Studio .NET 2005”“Microsoft Visual Studio .NET 2005” 此时将打开 2005 的起始页 要创建 C# 控制台应用程序,请从列表中选择 “创 建建”“项目”。此时将打开“新建项目”窗口 选择“Visual C# 项目”作为项目类型,选择“控 制台应用程序”作为模板
可元执行数据
U
N
CT
CSharpG创建和使用VBO的最佳方式
CSharpG创建和使用VBO的最佳方式回到顶部(go to top)开始近日在OpenGL红宝书上看到这样的讲解。
其核心意思是,在创建VBO时用glBufferData(GL_ARRAY_BUFFER, length, NULL, GL_STATIC_DRAW);来初始化buffer占用的内存(此内存在GPU端),其中的NULL 表示并未初始化数据(即此buffer中的数据是随机值,类似在C语言中刚刚创建一个数组int x[10]; 的情况)。
这样,就不必在CPU端申请大量内存了。
接下来需要初始化buffer数据时,用复制代码1 IntPtr pointer = buffer.MapBuffer(MapBufferAccess.WriteOnly);2 var array = (vec3*)pointer.ToPointer();3 for (int i = 0; i < length; i++)4 {5 array[i] = this.model.positions[i];6 }7 ptr.UnmapBuffer();复制代码来直接操作GPU上的数据即可。
使用这种方式,省去了在CPU端创建大规模非托管数组并上传到GPU端的步骤,直接在GPU端创建了buffer,且所需代码更少,可以说是目前我找到的最佳方式。
因此我在CSharpGL中集成并使用了这种方式。
回到顶部(go to top)顶点属性bufferCSharpGL中,用于描述顶点属性数组(Vertex Buffer Object)的类型是VertexAttributeBufferPtr 。
以前,我们可以通过如下的方式创建VertexAttributeBufferPtr 。
复制代码1 // 先在CPU端创建非托管数组VertexAttributeBuffer<vec3>对象2 using (var buffer = new VertexAttributeBuffer<vec3>(3 varNameInShader, VertexAttributeConfig.Vec3, BufferUsage.StaticDraw))4 {5 buffer.Alloc(this.model.positions.Length);// 在CPU端申请内存6 unsafe// 使用指针快速初始化7 {8 var array = (vec3*)buffer.Header.ToPointer();9 for (int i = 0; i < this.model.positions.Length; i++)10 {11 array[i] = this.model.positions[i];12 }13 }14 // 将CPU端的VertexAttributeBuffer<vec3>上传到GPU,获得我们需要的buffer对象。
Csharp窗体应用程序设计
6.2 组件的公共属性、事件和方法C#程序设计教程——蒙祖强编著 6.2.2 Control类
(3)Dock属性 该属性用于设定子控件在其容器控件中的填充方式,其取值和意 义是: ➢DockStyle.Fill:任何时候子控件都填充整个容器控件 ➢DockStyle.None:子控件按照设计时的界面出现,不随容器控件 的大小发生变化而变化 ➢DockStyle.Top、DockStyle.Bottom、DockStyle.Left、 DockStyle.Right:分别表示子控件向上、向下、向左和向右充满 半个容器控件,容器控件的大小发生变化时子控件仍然保持这种 状态
6.1 一个简单的文本编辑器
C#程序设计教程——蒙祖强编著
6.1.1 创建文本编辑器程序的步骤
(3)点击控件richTextBox1上方的菜单栏,然后依次输入相应的 菜单项:
6.1 一个简单的文本编辑器
C#程序设计教程——蒙祖强编著
6.1.1 创建文本编辑器程序的步骤
( 4 ) 在 菜 单设 计 界 面 中双击 “ Open file”项 , 在 自 动 形 成 的 openFileToolStripMenuItem_Click()函数中编写相关代码,结果如 下:
//“Open file”菜单项 private void openFileToolStripMenuItem_Click(object sender, EventArgs e) {
openFileDialog1.Filter = "txt files(*.txt)|*.txt"; if (openFileDialog1.ShowDialog() == DialogResult.OK) {
richTextBox1.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); } }
CSharp打印功能的实现
4、在“添加引用”对话框中,双击“System.Drawing.dll”和“System.Windows.Forms.dll”,然后单击“确定”。
5、将RichTextBoxPrintCtl.cs中的现有代码替换为以下代码:
using System;
this.btnPageSetup.Click += new System.EventHandler(this.btnPageSetup_Click);
12、将下面的代码添加到Form1类:
private int checkPrint;
private void btnPageSetup_Click(object sender, System.EventArgs e)
}
[StructLayout(LayoutKind.Sequential)]
private struct FORMATRANGE
{
public IntPtr hdc; //Actual DC to draw on
public IntPtr hdcTarget; //Target DC for determining text formatting
7、在“工具”菜单上,单击“自定义工具箱”。
8、在“.NET Framework组件”选项卡上,单击“浏览”,单击以选中“RichTextBoxPrintCtrl.dll”,然后单击“确定”。
9、将RichTextBoxPrintCtrl从工具箱拖入Form1。
10、在解决方案资源管理器中,右键单击Form1.cs,然后单击查看代码。
rectToPrint.Left = (int)(e.MarginBounds.Left * anInch);