C#清除一个事件的所有委托

phreez 2011-08-11 03:16:33
有没有可以一次过把所有委托删除的方法啊?一个个删太麻烦了!
...全文
6872 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamgis 2014-03-17
  • 打赏
  • 举报
回复
说得好。。。。。
isjoe 2011-08-12
  • 打赏
  • 举报
回复
移除一个按钮的所有单击事件,已经测试。。。。。OK


/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button12_Click(object sender, EventArgs e)
{
// 为按钮添加两个事件
this.button13.Click += new EventHandler(button12_Click_1);
this.button13.Click += new EventHandler(button12_Click_2);
}

/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button12_Click_1(object sender, EventArgs e)
{
MessageBox.Show("1");
}

/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button12_Click_2(object sender, EventArgs e)
{
MessageBox.Show("2");
}

/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button14_Click(object sender, EventArgs e)
{
// 检索按钮的事件,这里单击事件的名字是EventClick,要注意的
Delegate[] invokeList = GetObjectEventList(this.button13, "EventClick");
if (invokeList != null)
{
foreach (Delegate del in invokeList)
{
// 我已经测试,事件被全部取消了,没有问题。
typeof(Button).GetEvent("Click").RemoveEventHandler(this.button13, del);
}
}
}

/// <summary>
/// 获取控件事件
/// </summary>
/// <param name="p_Control">对象</param>
/// <param name="p_EventName">事件名 EventClick EventDoubleClick </param>
/// <returns>委托列</returns>
public Delegate[] GetObjectEventList(Control p_Control, string p_EventName)
{
PropertyInfo _PropertyInfo = p_Control.GetType().GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
if (_PropertyInfo != null)
{
object _EventList = _PropertyInfo.GetValue(p_Control, null);
if (_EventList != null && _EventList is EventHandlerList)
{
EventHandlerList _List = (EventHandlerList)_EventList;
FieldInfo _FieldInfo = (typeof(Control)).GetField(p_EventName, BindingFlags.Static | BindingFlags.NonPublic);
if (_FieldInfo == null) return null;
Delegate _ObjectDelegate = _List[_FieldInfo.GetValue(p_Control)];
if (_ObjectDelegate == null) return null;
return _ObjectDelegate.GetInvocationList();
}
}
return null;
}
phreez 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 isjoe 的回复:]
通过反射获取对象的全部事件

移除全部事件委托

C# code


public class Test
{
public event EventHandler AA;
public void Foo()
{
if (AA != null) AA(this, new EventArgs());……
[/Quote]
额。。。我发现这个是一个类里面的,那么我要清除窗体里的控件的委托,该怎么改?
phreez 2011-08-11
  • 打赏
  • 举报
回复
哦哦。。。。
isjoe 2011-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 phreez 的回复:]
foreach 那里报错说没有new啊。。。。。。
[/Quote]

说明GetObjectEventList(c, "AA"); 返回了null
你确定一下事件的名称是否正确,有时候对象的事件名称并不是我们看到的样子。
phreez 2011-08-11
  • 打赏
  • 举报
回复
foreach 那里报错说没有new啊。。。。。。
isjoe 2011-08-11
  • 打赏
  • 举报
回复
通过反射获取对象的全部事件

移除全部事件委托

public class Test
{
public event EventHandler AA;
public void Foo()
{
if (AA != null) AA(this, new EventArgs());
}
}

static void Main(string[] args)
{
Test obj = new Test();
obj.AA += delegate { Console.WriteLine("event raised."); };
obj.Foo();
RemoveEvent<Test>(obj, "AA");
obj.Foo();
Console.ReadKey();
}

static void RemoveEvent<T>(T c, string name)
{
Delegate[] invokeList = GetObjectEventList(c, "AA");
foreach (Delegate del in invokeList)
{
typeof(T).GetEvent("AA").RemoveEventHandler(c, del);
}
}

/// <summary>
/// 获取对象事件 zgke@sina.com qq:116149
/// </summary>
/// <param name="p_Object">对象 </param>
/// <param name="p_EventName">事件名 </param>
/// <returns>委托列 </returns>
public static Delegate[] GetObjectEventList(object p_Object, string p_EventName)
{
FieldInfo _Field = p_Object.GetType().GetField(p_EventName, BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public | BindingFlags.Static);
if (_Field == null)
{
return null;
}
object _FieldValue = _Field.GetValue(p_Object);
if (_FieldValue != null && _FieldValue is Delegate)
{
Delegate _ObjectDelegate = (Delegate)_FieldValue;
return _ObjectDelegate.GetInvocationList();
}
return null;
}

diandian82 2011-08-11
  • 打赏
  • 举报
回复
http://blog.csdn.net/diandian82/article/details/5738299
C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,每一个知识点都配有具体的示例,便于读者理解。 《C#全能速查宝典》所讲的知识点按照功能和字母进行排序,读者既可以按照功能顺序查找,又可以按照字母顺序学习。 《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ============================================================ 图书目录 第1章 C#语言基础 1 1.1 常用概念、关键字及基础类 1 1.1.1 abstract关键字——抽象 1 1.1.2 as操作符——引用类型转换 3 1.1.3 base关键字——从派生类中访问基类的成员 3 1.1.4 变量——存储特定类型的数据 4 1.1.5 Console类——控制台中的输入流、输出流和错误流 6 1.1.6 Convert类——类型转换 8 1.1.7 常量——值不改变的量 9 1.1.8 Dispose方法——释放资源 10 1.1.9 迭代器——相同类型的值的有序序列的一段代码 10 1.1.10 泛型——处理算法和数据结构 11 1.1.11 分部类——将一个类分成几部分 12 1.1.12 is操作符——检查变量是否为指定的类型 14 1.1.13 lock关键字——锁定 15 1.1.14 namespace关键字——定义命名空间 15 1.1.15 new运算符——创建一个新的类型实例 16 1.1.16 Object类型——所有类型的基类 17 1.1.17 OOP技术——面向对象编程技术 18 1.1.18 ReadLine方法——从当前流中读取一行字符 20 1.1.19 typeof运算符——获得系统原型对象的类型 21 1.1.20 using关键字——引入命名空间 22 1.1.21 WriteLine方法——写入流 23 1.2 数学方法类——Math 25 1.2.1 Abs方法——返回指定数字的绝对值 25 1.2.2 Acos方法——返回余弦值为指定数字的角度 26 1.2.3 Asin方法——返回正弦值为指定数字的角度 26 1.2.4 Atan方法——返回正切值为指定数字的角度 27 1.2.5 Pow方法——返回指定数字的指定次幂 27 1.2.6 Round方法——将小数值舍入到指定的精度 28 1.3 流程控制语句 29 1.3.1 break语句——跳出循环 29 1.3.2 case语句——比较表达式以确定结果 30 1.3.3 continue语句——继续执行下一个循环 31 1.3.4 do…while语句——循环语句 31 1.3.5 for语句——循环语句 32 1.3.6 foreach语句——枚举一个集合的元素 33 1.3.7 goto语句——跳转到标签 34 1.3.8 if…else语句——条件判断语句 36 1.3.9 return语句——返回 38 1.3.10 switch case语句——条件判断语句 39 1.3.11 throw语句——显式引发异常 40 1.3.12 try…catch…finally语句——捕捉异常 42 1.3.13 while语句——循环语句 43 1.4 字符串处理 44 1.4.1 AddDays方法——添加天数 44 1.4.2 AddString方法——添加文本字符串 45 1.4.3 Compare方法——比较两个字符串 46 1.4.4 CompareTo方法——比较两个字符串对象 47 1.4.5 DATEADD函数——在指定日期上加一段时间 48 1.4.6 DateDiff方法——获取日期时间的间隔数 48 1.4.7 DateTime结构——表示时间上的一刻 50 1.4.8 DAY函数——返回日期部分的整数 51 1.4.9 DayOfWeek属性——获取星期几 52 1.4.10 Equals方法——比较两个字符串对象 53 1.4.11 First函数——返回查询结果的第一个记录 55 1.4.12 FirstDayOfWeek属性——获取或设置一周中的第一天 56 1.4.13 Format方法——格式化字符串 56 1.4.14 GETDATE函数——返回当前系统日期和时间 58 1.4.15 GetDayOfMonth方法——返回几号 59 1.4.16 GetDayOfWeek方法——返回星期几 59 1.4.17 GetDayOfYear方法——返回第几天 60 1.4.18 GetDaysInMonth方法——返回指定月份中的天数 60 1.4.19 GetDaysInYear方法——返回指定年份中的天数 61 1.4.20 GetMonth方法——返回指定日期中的月份 61 1.4.21 GetMonthsInYear方法——返回指定年份的月数 62 1.4.22 GetText方法——检索文本数据 63 1.4.23 GetYear方法——返回指定日期中的年份 64 1.4.24 IndexOf方法——确定指定字符在字符串中的索引 65 1.4.25 IsLeapYear方法——判断年份是否为闰年 67 1.4.26 IsMatch方法——搜索正则表达式匹配项 67 1.4.27 IsUpper方法——判断是否大写 68 1.4.28 Join方法——串联字符串 69 1.4.29 LastIndexOf方法——确定字符在字符串中最后索引 70 1.4.30 Matches方法——检查字符串是否有重复的词出现 71 1.4.31 MONTH函数——返回指定日期中月部分的整数 73 1.4.32 PadLeft方法——在左边用空格填充 73 1.4.33 PadRight方法——在右边用空格填充 74 1.4.34 Random类——伪随机数生成器 75 1.4.35 Regex类——正则表达式 76 1.4.36 Split方法——分割字符串 78 1.4.37 String类——字符串 79 1.4.38 StringBuilder类——可变字符串 82 1.4.39 Substring方法——截取字符串 83 1.4.40 TimeSpan对象——表示时间间隔或持续时间 84 1.4.41 ToInt32方法——转换为32位有符号整数 85 1.4.42 ToLongDateString 方法——转换为长日期字符串 86 1.4.43 ToLongTimeString 方法——转换为长时间字符串 87 1.4.44 ToLower方法——转换为小写 87 1.4.45 ToShortDateString方法——转换为短日期字符串 88 1.4.46 ToShortTimeString方法——转换为短时间字符串 88 1.4.47 ToString方法——转换为字符串 89 1.4.48 ToUpper方法——转换为大写 90 1.4.49 Trim方法——移除所有空白字符 91 1.4.50 TrimEnd方法——从尾部移除匹配项 92 1.4.51 TrimStart方法——从开始移除匹配项 92 1.4.52 YEAR函数——返回指定日期的年份的整数 93 1.5 数组与集合 93 1.5.1 Add方法——添加项 93 1.5.2 ArrayList类——集合 95 1.5.3 AsEnumerable方法——转换为IEnumerable类型 97 1.5.4 Clear方法——清空内容 98 1.5.5 Contains方法——确定是否包含某项 99 1.5.6 ContainsKey方法——确定哈希表是否包含特定键 100 1.5.7 ContainsText方法——确定剪贴板中是否存在数据 101 1.5.8 ContainsValue方法——确定哈希表是否包含特定值 101 1.5.9 Count属性——获取数目 102 1.5.10 GetEnumerator方法——循环访问对象 103 1.5.11 GetEnvironmentVariables方法——检索环境变量 104 1.5.12 Hashtable类——哈希表 106 1.5.13 Insert方法——插入项 110 1.5.14 Item属性——获取或设置指定索引处的元素 111 1.5.15 Length属性——获取长度 112 1.5.16 Next方法——返回一个指定范围内的随机数 113 1.5.17 Queue类——队列 115 1.5.18 Remove方法——移除指定项 116 1.5.19 RemoveAt方法——移除指定索引处的项 118 1.5.20 Replace方法——替换文件或字符串 119 1.5.21 Reverse方法——反转数组元素 120 1.5.22 Sort方法——数组排序 121 1.5.23 Stack类——堆栈 123 第2章 Windows窗体及常用控件 126 2.1 Form窗体 126 2.1.1 AcceptButton属性——设置接受按钮 126 2.1.2 Activate事件——当激活窗体时发生 126 2.1.3 Appllication类——提供管理应用程序的静态方法 126 2.1.4 CancelButton属性——设置取消按钮 128 2.1.5 Computer类——提供操作计算机组件的属性 129 2.1.6 ComputerInfo类——获取计算机信息 130 2.1.7 Control类——定义控件基类 131 2.1.8 Environment类——提供当前环境和平台的信息 134 2.1.9 Form窗体——可视化界面 136 2.1.10 FormClosed事件——关闭窗体后事件 139 2.1.11 FormClosing事件——关闭窗体前事件 139 2.1.12 Icon属性——设置图标 139 2.1.13 IsMdiContainer属性——设置父窗体 140 2.1.14 LayoutMdi方法——排列子窗体 141 2.1.15 Load事件——窗体加载事件 141 2.1.16 MaximizeBox属性——是否显示最大化按钮 142 2.1.17 Maximum属性——设置数字显示框的最大值 142 2.1.18 MDI窗体——多文档界面 143 2.1.19 MdiChildren属性——获取子窗体的数组 146 2.1.20 MdiParent属性——设置父窗体 147 2.1.21 MinimizeBox属性——是否显示最小化按钮 147 2.1.22 Minimum属性——数字显示框的最小值 148 2.1.23 Opacity属性——设置窗体的透明度级别 148 2.1.24 Owner属性——设置窗体所有者 149 2.1.25 StartPosition属性——设置窗体起始位置 150 2.1.26 StartupPath 属性——获取可执行文件路径 150 2.1.27 TopMost属性——窗体是否应显示为最顶层窗体 151 2.1.28 WindowState属性——窗体的窗口状态 151 2.2 文本类控件 152 2.2.1 AllowEdit属性——是否可以编辑列表项 152 2.2.2 AppendText方法——追加文本 152 2.2.3 BeginEdit方法——将单元格置于编辑模式下 153 2.2.4 Button控件——按钮控件 153 2.2.5 CancelEdit属性——取消更改 155 2.2.6 CanPaste方法——是否可以粘贴数据 155 2.2.7 CanRedo属性——是否有可以重新应用的操作 156 2.2.8 CanSelect属性——是否可以选中控件 157 2.2.9 CanUndo属性——能否撤销上一个操作 157 2.2.10 Cut方法——将选定内容移动到“剪贴板”中 158 2.2.11 Find方法——搜索指定的项目 158 2.2.12 FindString方法——搜索文本 160 2.2.13 Label控件——标签控件 161 2.2.14 LabelEdit属性——允许用户编辑控件数据 163 2.2.15 LinkLabel控件——以超链接形式显示文本 164 2.2.16 MaskedTextBox控件——使用掩码区分用户输入 166 2.2.17 Multiline属性——是否为多行输入数据 169 2.2.18 PasswordChar属性——取代用户输入而显示的字符 170 2.2.19 Redo方法——重新应用控件中上次撤销的操作 171 2.2.20 RichTextBox控件——有格式文本控件 171 2.2.21 Select方法——激活控件 173 2.2.22 SelectAll方法——选定所有文本 176 2.2.23 Selected属性——是否选定 176 2.2.24 SelectedCells属性——用户选定的单元格集合 177 2.2.25 SelectedColumns属性——用户选定的列集合 178 2.2.26 SelectedRows属性——用户选定的行集合 179 2.2.27 SelectionBackColor属性——文本在选中时的颜色 180 2.2.28 SelectionColor属性——插入点的文本颜色 180 2.2.29 SelectionEnd属性——设置选定日期范围的结束日期 181 2.2.30 SelectionFont属性——选定文本或插入点的字体 182 2.2.31 SelectionIndent属性——所选内容开始行的缩进距离 183 2.2.32 SelectionLength属性——控件中选定的字符数 184 2.2.33 SelectionRange 属性——设置选定的日期范围 185 2.2.34 SelectionStart属性——选择的起始位置的字符索引 185 2.2.35 TextBox控件——输入或显示文本 186 2.2.36 TextChanged事件——Text属性值更改时发生 187 2.3 选择类控件 188 2.3.1 CheckBox控件——复选框控件 188 2.3.2 CheckBoxes属性——是否显示复选框 190 2.3.3 Checked属性——复选框是否处于选中状态 190 2.3.4 CheckedChanged事件——Checked属性更改时发生 191 2.3.5 CheckedListBox控件——复选框列表控件 191 2.3.6 CheckState属性——设置CheckBox控件的状态 193 2.3.7 ComboBox控件——下拉组合框控件 194 2.3.8 DomainUpDown控件——上下选择控件 195 2.3.9 DropDownStyle属性——指定组合框样式的值 197 2.3.10 GetItemCheckState方法——当前项的复选状态的值 198 2.3.11 GetItemText方法——指定项的文本表示形式 199 2.3.12 Index属性——从零开始的索引 200 2.3.13 Items属性——数组列表对象中的项的集合 200 2.3.14 ListBox控件——列表控件 201 2.3.15 ListView控件——显示带图标的项列表 205 2.3.16 NumericUpDown控件——数值选择控件 208 2.3.17 RadioButton控件——单选按钮 210 2.3.18 SelectedIndex属性——获取选择项的索引 212 2.3.19 SelectedIndices属性——表示当前选中的项 213 2.3.20 SelectedItem属性——当前选中的项 214 2.3.21 SelectedItems属性——选定项的集合 215 2.3.22 SelectedText属性——选定文本 216 2.4 容器类控件 217 2.4.1 FlatStyle属性——设置控件的平面样式外观 217 2.4.2 FlowDirection属性——指示FlowLayoutPanel控件的流向 217 2.4.3 FlowLayoutPanel控件——水平或垂直排列内容 218 2.4.4 GroupBox控件——分组控件 219 2.4.5 Panel控件——容器控件 220 2.4.6 TabControl控件——选项卡控件 222 2.4.7 TabIndex属性——控件的Tab键顺序 224 2.4.8 TabPages属性——选项卡页的集合 224 第3章 Windows高级控件 226 3.1 日期时间类控件 226 3.1.1 CalendarFont属性——日历的字体样式 226 3.1.2 CalendarForeColor属性——日历的前景色 226 3.1.3 DateTimePicker控件——日期和日历的组合 226 3.1.4 MaxDate属性——最大日期和时间 228 3.1.5 MinDate属性——最小日期和时间 228 3.1.6 MonthCalendar控件——以网格形式显示日历 229 3.1.7 SetDate方法——将日期设置为当前选定的日期 231 3.1.8 ShowToday属性——是否显示当前日期 232 3.2 对话框、菜单、工具栏及状态栏控件 232 3.2.1 ColorDialog控件——颜色对话框 232 3.2.2 ContextMenuStrip控件——右键快捷菜单 233 3.2.3 ExpandAll方法——展开所有树节点 233 3.2.4 Filter属性——设置筛选器字符串 234 3.2.5 FolderBrowserDialog控件——浏览文件夹对话框 234 3.2.6 Font属性——设置字体 235 3.2.7 FontDialog控件——字体对话框 235 3.2.8 InitialDirectory属性——文件对话框显示的初始目录 237 3.2.9 MenuStrip控件——菜单控件 238 3.2.10 Nodes属性——树节点集合 241 3.2.11 OpenFileDialog控件——打开文件对话框 241 3.2.12 RestoreDirectory属性——是否还原当前目录 244 3.2.13 RootFolder属性——设置浏览的根文件夹 245 3.2.14 SaveFileDialog组件——保存文件对话框 246 3.2.15 SelectedNode属性——获取选定的树节点 248 3.2.16 SelectedPath属性——用户选定的路径 249 3.2.17 ShowDialog方法——打开模式对话框 249 3.2.18 ToolStrip控件——工具栏控件 251 3.2.19 TreeNode类——树节点 252 3.2.20 TreeView控件——树控件 254 3.3 数据绑定类控件 256 3.3.1 BindingNavigator控件——导航和操作数据 256 3.3.2 Cell对象——表示Word文档中的单元格 258 3.3.3 CellClick事件——单元格的任何部分被单击时发生 259 3.3.4 CellEnter事件——控件接收到输入焦点时发生 260 3.3.5 CellMouseClick事件——鼠标单击单元格时发生 261 3.3.6 CellLeave事件——单元格失去输入焦点时发生 261 3.3.7 Cells属性——Bookmark控件中的表单元格 261 3.3.8 ColumnCount属性——DataGridView控件显示的列数 262 3.3.9 Columns属性——控件中所有列的集合 262 3.3.10 ColumnWidth属性——ListBox中列的宽度 263 3.3.11 CurrentCell属性——设置当前处于活动状态的单元格 263 3.3.12 CurrentRow属性——包含当前单元格的行 263 3.3.13 DataGridView控件——数据控件 264 3.3.14 FullRowSelect属性——是否选择其所有子项 268 3.3.15 GetCellCount方法——获取满足筛选器的单元格数目 269 3.3.16 GetColumn方法——指定子控件的列位置 270 3.3.17 NewRow方法——添加一条新记录 270 3.3.18 RowCount方法——DataGridView中显示的行数 271 3.3.19 Rows属性——DataGridView控件中的所有行 272 3.4 打印类控件 273 3.4.1 CrystalReportViewer控件——水晶报表查看控件 273 3.4.2 Document属性——设置要预览的文档 280 3.4.3 PageSetupDialog组件——配置页面的对话框 281 3.4.4 Print方法——打印当前页面 283 3.4.5 PrintDialog组件——打印对话框 283 3.4.6 PrintDocument组件——设置打印的文档 286 3.4.7 PrinterSettings属性——打印机设置 291 3.4.8 PrintPage事件——当需要为当前页打印的输出时发生 292 3.4.9 PrintPreviewControl组件——按文档打印时的外观显示Print Document组件 292 3.4.10 PrintPreviewDialog组件——显示PrintDocument组件在打印时的外观 295 3.4.11 PrinterSettings类——用来指定有关文档打印方式的信息 297 3.4.12 Zoom属性——指示页面的显示大小 300 3.5 其他常用组件 300 3.5.1 BackgroundWorker组件——在主线程的另一线程上异步执行耗时的操作 300 3.5.2 ErrorProvider控件——检查并显示错误信息 302 3.5.3 EventLog组件——连接本地和远程计算机的事件日志 303 3.5.4 HelpProvider组件——将帮助文件与Windows应用程序相关联 306 3.5.5 HScrollBar控件——一个标准Windows水平滚动条 309 3.5.6 Image属性——显示在控件上的图像 311 3.5.7 ImageAlign属性——在控件中显示的图像的对齐方式 312 3.5.8 ImageFormat类——指定图像的格式 312 3.5.9 ImageList组件——用于存储图像 314 3.5.10 ImageList属性——在控件中显示的图像的ImageList 316 3.5.11 Interval属性——设置Timer控件执行的间隔 317 3.5.12 NotifyIcon控件——设置程序的系统托盘图标 317 3.5.13 PerformStep方法——按照Step属性的数量增加进度栏的当前位置 319 3.5.14 PictrueBox控件——用于显示指定的图像 320 3.5.15 Play方法——播放.wav文件 323 3.5.16 ProgressBar控件——进度条 323 3.5.17 SetError方法——设置错误信息 326 3.5.18 SetShowHelp方法——是否显示帮助信息 327 3.5.19 SetToolTip方法——设置提示文本 328 3.5.20 Step属性——增加进度条的当前位置时所根据的数量 328 3.5.21 Stop方法——停止加载网页 329 3.5.22 Tick事件——计时器处于启用状态时发生 330 3.5.23 Timer组件——定期引发事件的组件 330 3.5.24 ToolTip控件——显示提示信息 332 3.5.25 ToolTipIcon属性——提示文本旁显示的图标类型 333 3.5.26 ToolTipText属性——ToolTip显示的文本 334 3.5.27 ToolTipTitle属性——工具提示窗口的标题 334 3.5.28 TrackBar控件——标准的Windows跟踪条 335 3.5.29 Url属性——引用服务说明的URL 337 3.5.30 VscrollBar控件——标准的Windows垂直滚动条 337 3.5.31 WebBrowser控件——在窗体中显示网页 339 3.5.32 Windows Media Player控件——播放常见的音频文件 343 第4章 控件公共属性、方法及事件 347 4.1 控件公共属性 347 4.1.1 BackColor属性——设置控件的背景色 347 4.1.2 BackgroudColor属性——设置控件背景色 347 4.1.3 BackgroudImage属性——设置控件背景图像 347 4.1.4 Border属性——控件边框 348 4.1.5 BorderStyle属性——控件的边框样式 349 4.1.6 Bottom属性——控件下边缘与其容器的工作区上边缘之间的距离 349 4.1.7 CanFocus属性——控件是否可以接收焦点 350 4.1.8 Capture属性——控件是否已捕获鼠标 350 4.1.9 Color属性——设置用户选定的颜色 350 4.1.10 Dock属性——控件在窗体中的布局样式 351 4.1.11 Enabled属性——控件是否可用 352 4.1.12 ForeColor属性——设置控件的前景色 352 4.1.13 Handle属性——获取控件绑定到的窗口句柄 352 4.1.14 Height属性——设置控件的高度 353 4.1.15 KeyChar属性——设置与按下的键对应的字符 354 4.1.16 KeyValue属性——获取KeyDown或KeyUp事件的键盘值 355 4.1.17 Lines属性——设置多行配置中的文本行 355 4.1.18 Location属性——控件的左上角相对于其容器的左上角的坐标 356 4.1.19 Name属性——控件或实例的名称 356 4.1.20 Parent属性——设置控件的父容器或获取指定子目录的父目录 357 4.1.21 Position属性——设置坐标 358 4.1.22 ReadOnly属性——是否只读 359 4.1.23 Right属性——控件右边缘与其容器的工作区左边缘之间的距离 359 4.1.24 RightToLeft属性——控件的文本从右向左读取 360 4.1.25 ScrollBars属性——滚动条的可见性和位置 360 4.1.26 SizeMode属性——指示如何显示图像 361 4.1.27 Tag属性——窗体或控件的标识 362 4.1.28 Text属性——与控件关联的文本 362 4.1.29 TextAlign 属性——控件上文本的对齐方式 363 4.1.30 Top属性——控件上边缘与其容器的工作区上边缘之间的距离 364 4.1.31 Value属性——辅助性对象的值 364 4.1.32 View属性——项在控件中的显示方式 365 4.1.33 Visible属性——控件是否可见 366 4.1.34 Width属性——控件的宽度 366 4.2 控件公共方法 367 4.2.1 BringToFront方法——将控件带到Z顺序的前面 367 4.2.2 Focus方法——为控件设置输入焦点 367 4.2.3 GetClipboardContent方法——检索选定单元格内容的格式化值 368 4.2.4 GetParent方法——检索指定路径的父目录 368 4.2.5 Hide方法——隐藏窗体 369 4.2.6 Load方法——加载XML文档 369 4.2.7 LoadFile方法——将文件加载到RichTextBox控件中 371 4.2.8 Navigate方法——打开指定的URL地址 372 4.2.9 Refresh方法——重新加载当前的网页 373 4.2.10 SaveAs方法——用新名称或新格式保存文档 373 4.2.11 SaveFile方法——将内容保存到文件中 374 4.2.12 Show方法——显示光标或者打开新窗体 375 4.2.13 UpButton方法——按照指定数值递增 376 4.3 控件公共事件 377 4.3.1 Click事件——单击控件时触发该事件 377 4.3.2 Enter事件——光标进入控件时发生 378 4.3.3 KeyDown事件——控件有焦点按下键时发生 378 4.3.4 KeyPress事件——控件有焦点按下键时发生 380 4.3.5 KeyUp事件——控件有焦点释放键时发生 381 4.3.6 Leave事件——输入焦点离开控件时发生 381 4.3.7 MouseClick事件——用户单击控件时发生 382 4.3.8 Navigated事件——加载新文档时发生 383 4.3.9 Paint事件——重绘或更新控件时发生 383 第5章 数据库开发 385 5.1 SQL语言基础 385 5.1.1 AVG聚合函数——返回组中值的平均值 385 5.1.2 CAST函数——数据类型显式转换 385 5.1.3 COUNT函数——返回组中的项的数量 386 5.1.4 Last函数——返回查询结果的最后一个记录 386 5.1.5 MAX函数——返回表达式中的最大值 388 5.1.6 MIN函数——返回表达式中的最小值 388 5.1.7 newid函数——创建uniqueidentifier类型的惟一值 389 5.1.8 SUM函数——返回表达式中所有值的和 389 5.1.9 UPDATE语句——更改表中的现有数据 390 5.2 ADO.NET技术 392 5.2.1 Command对象——对数据源执行增、删、改、查操作 392 5.2.2 CommandText属性——获取设置SQL语句或存储过程 393 5.2.3 CommandTimeout属性——获取或设置错误等待时间 393 5.2.4 CommandType属性——获取或设置如何解释CommandText属性 394 5.2.5 Connection对象——数据库连接对象 394 5.2.6 ConnectionState枚举——数据库连接状态 395 5.2.7 DataAdapter类——数据库桥接器 396 5.2.8 DataMember属性——获取或设置数据源列表或表名称 398 5.2.9 DataReader类——只读数据集 398 5.2.10 DataSet类——数据集 400 5.2.11 DataSource属性——获取或设置数据源 402 5.2.12 ExecuteNonQuery方法——执行SQL语句并返回受影响的行数 402 5.2.13 ExecuteReader方法——执行SQL语句并返回DataReader对象 403 5.2.14 ExecuteScalar方法——执行SQL语句并返回结果集中第1行的第1列 404 5.2.15 Fill方法——填充数据集 405 5.2.16 Merge方法——合并数据集 407 5.2.17 Parameters属性——获取SqlParameterCollection 409 5.2.18 ReadXml方法——将XML架构和数据读入数据集 410 5.2.19 SelectCommand属性——获取或设置选择记录命令 411 5.2.20 SQL注入式攻击——利用设计上的漏洞攻击SQL 412 5.2.21 SqlCommand类——SQL执行命令 413 5.2.22 SqlConnection类——SQL数据库连接对象 415 5.2.23 SqlDataAdapter类——SQL数据库桥接器 416 5.2.24 SqlDataReader类——SQL只读数据集 418 5.2.25 Tables属性——获取包含在数据集中的表的集合 421 5.2.26 Update方法——使控件重绘工作区内的无效区域 422 5.2.27 UpdateCommand属性——获取或设置更新记录命令 423 5.2.28 WriteXml方法——将数据集中数据写入到XML中 423 5.3 LINQ技术 424 5.3.1 Lambda表达式——匿名函数 424 5.3.2 LINQ技术——语言集成查询 426 5.3.3 LinqToDataSet技术——LINQ操作数据集 427 5.3.4 LinqToObjects技术——LINQ操作数组和集合 429 5.3.5 LinqToSql技术——LINQ操作SQL数据库 431 5.3.6 LinqToXml技术——LINQ操作XML文件 436 5.3.7 var关键字——根据初始化语句推断变量类型 439 第6章 文件、数据流与注册表 441 6.1 文件与I/O数据流 441 6.1.1 ASCII码——键盘的一种表示方式 441 6.1.2 ASCIIEncoding类——ASCII字符编码的操作类 442 6.1.3 Attributes属性——获取和设置文件的属性 443 6.1.4 BinaryReader类——将特定的数据读作二进制值 445 6.1.5 BinaryWriter类——将二进制值写入到流中 447 6.1.6 CanRead属性——判断当前流是否支持读写 448 6.1.7 Close方法——释放所有关联的资源 449 6.1.8 Copy方法——文件的复制 450 6.1.9 CopyFile方法——将文件复制到新的位置 451 6.1.10 CopyTo方法——将指定的字符串复制到字符数组中 452 6.1.11 Create方法——创建文件 455 6.1.12 CreateDirectory方法——创建指定路径中的所有目录 456 6.1.13 CreateText方法——创建或打开文本文件 456 6.1.14 CreationTime属性——获取或设置文件的创建时间 457 6.1.15 CryptoStream类——将数据流连接到加密转换的流 457 6.1.16 Delete方法——删除文件 461 6.1.17 Directory类——对文件夹进行操作的类 463 6.1.18 DirectoryEntry类——封装节点或对象 464 6.1.19 DirectoryInfo类——对文件夹进行操作的类 466 6.1.20 DirectoryName属性——获取路径 468 6.1.21 DirectorySearcher组件——执行查找 468 6.1.22 DriveInfo类——驱动器的信息访问 469 6.1.23 Encoding属性——获取编码方式 470 6.1.24 Exists方法——判断文件是否存在 471 6.1.25 Exists属性——判断文件是否存在 472 6.1.26 Extension属性——获取文件扩展名 473 6.1.27 File类——对文件进行操作的类 473 6.1.28 FileAttributes枚举——提供文件和目录的属性 475 6.1.29 FileInfo类——文件的操作类 476 6.1.30 FileName属性——获取或设置文件的名称 478 6.1.31 FileStream类——对文件流操作的类 478 6.1.32 Flush方法——清除流的缓冲区 480 6.1.33 GetBytes方法——将字符串编码设为字节序列 481 6.1.34 GetDirectories方法——获取子目录的名称 482 6.1.35 GetExtension方法——获取路径字符串的扩展名 485 6.1.36 GetFiles方法——获取目录中的文件名称 486 6.1.37 GetFileSystemEntries方法——获取目录中的所有名称 487 6.1.38 GetFileSystemInfos方法——获取所有文件的信息 489 6.1.39 GetStream方法——返回用于发送和接收的数据 491 6.1.40 GetString方法——将字节解码成字符串 491 6.1.41 HasRows属性——指示 OleDbDataReader是否有数据 493 6.1.42 MD5CryptoServiceProvider类——操作MD5的类 493 6.1.43 MemoryStream类——创建其支持存储区为内存的流 495 6.1.44 Move方法——文件的移动 497 6.1.45 MoveNext方法——移动到下一个字符 497 6.1.46 MoveTo方法——文件的移动 498 6.1.47 NetworkStream类——网络访问的基础数据流 500 6.1.48 Open方法——打开文件 502 6.1.49 OpenFile方法——以只读方式打开文件 503 6.1.50 OpenText方法——打开UTF-8编码文本文件 504 6.1.51 Path属性——监视的目录的路径 505 6.1.52 Peek方法——返回下一个可用的字符 506 6.1.53 Read方法——读取数据流 507 6.1.54 ReadBytes方法——将指定的字节读入字节数组 508 6.1.55 ReadToEnd方法——从流的当前位置读到末尾 509 6.1.56 Stream类——对数据流进行操作的类 510 6.1.57 StreamReader类——数据流的读取类 512 6.1.58 StreamWriter类——数据流的写入类 513 6.1.59 TextReader类——读取连续字符的读取器 515 6.1.60 TextWriter类——编写一个有序字符系列的编写器 516 6.1.61 Write方法——将流写入到文件中 517 6.2 注册表技术 521 6.2.1 CreateSubKey方法——创建或打开子项 521 6.2.2 GetValue方法——获取注册表项中的值 522 6.2.3 GetValueNames方法——所有值名称的字符串数组 523 6.2.4 GetSubKeyNames方法——所有子项名称字符串数组 525 6.2.5 OpenSubKey方法——以只读方式检索子项 525 6.2.6 Registry类——注册表操作类 528 6.2.7 RegistryKey类——表示Windows注册表中的项级节点 529 6.2.8 SetValue方法——设置注册表项的指定名称/值对 531 第7章 GDI+绘图技术 532 7.1 GDI+绘图基础 532 7.1.1 Bitmap类——图像对象 532 7.1.2 Cursor类——绘制光标指针图像 533 7.1.3 GDI+——图形图像的绘制 535 7.1.4 Graphics类——绘图类 536 7.1.5 GraphicsPath类——一系列相互连接的直线和曲线 540 7.1.6 Icon类——图标的操作类 542 7.1.7 Image类——图像的操作类 543 7.1.8 LinearGradientBrush类——线性渐变封装Brush 545 7.1.9 Region类——由矩形和路径构成的图形形状的内部 547 7.1.10 SolidBrush类——定义单色画笔 548 7.2 常用绘图方法 549 7.2.1 Draw方法——绘制光标 549 7.2.2 DrawArc方法——绘制圆弧 550 7.2.3 DrawBezier方法——绘制贝塞尔样条 551 7.2.4 DrawEllipse方法——绘制椭圆 553 7.2.5 DrawImage方法——绘制Image图像 555 7.2.6 DrawLine方法——绘制直线 556 7.2.7 DrawPath方法——绘制GraphicsPath图形路径 558 7.2.8 DrawPie方法——绘制扇形 558 7.2.9 DrawPolygon方法——绘制多边形 560 7.2.10 DrawRectangle方法——绘制矩形 561 7.2.11 DrawString方法——绘制文本字符串 562 7.3 常用填充图像方法 565 7.3.1 FillEllipse方法——填充椭圆 565 7.3.2 FillPath方法——填充GraphicsPath的内部 566 7.3.3 FillPie方法——填充扇形 567 7.3.4 FillPolygon方法——填充多边形 568 7.3.5 FillRectangle方法——填充矩形框 570 7.3.6 FillRegion方法——填充一个区域 572 7.4 其他常用方法 572 7.4.1 Clone方法——创建Bitmap对象的某个部分的副本 572 7.4.2 CreateGraphics方法——创建Graphics对象 574 7.4.3 FromArgb方法——从ARGB值创建Color结构 574 7.4.4 FromFile方法——从指定的文件创建Image 577 7.4.5 FromImage方法——从Image创建新的Graphics对象 578 7.4.6 FromStream方法——数据流创建Image 578 7.4.7 GetPixel方法——获取图像中的像素颜色 580 7.4.8 GetThumbnailImage方法——Image的缩略图 581 7.4.9 Save方法——将图片以文件的形式进行复制 583 7.4.10 SetPixel方法——设置图像中的像素颜色 583 7.4.11 Transform方法——对路径的数据点进行变换 584 第8章 C#高级编程 586 8.1 网络编程技术 586 8.1.1 Accept方法——为新建连接创建新的Socket对象 586 8.1.2 AcceptSocket方法——接收挂起的连接请求 586 8.1.3 BeginConnect方法——开始远程主机连接的异步请求 587 8.1.4 Dns类——从Internet域名系统检索特定主机的信息 588 8.1.5 GetHostAddresses方法——返回主机的IP地址 589 8.1.6 GetHostByAddress方法——创建IPHostEntry实例 590 8.1.7 GetHostByName方法——获取指定DNS主机名的信息 591 8.1.8 GetHostName方法——获取本地计算机的主机名 592 8.1.9 IPEndPoint类——将网络端点表示为IP地址和端口号 592 8.1.10 IPHostEntry类——为主机地址信息提供容器类 594 8.1.11 Listen方法——将Socket置于侦听状态 596 8.1.12 MachineName属性——读取或写入事件的计算机名称 596 8.1.13 MailMessage类——邮件的操作类 597 8.1.14 Net send命令——用net send命令进行发送 598 8.1.15 Net use命令——实现映射网络驱动器 599 8.1.16 Ping类——网络访问远程计算机的操作类 601 8.1.17 POP3协议——POP邮件的操作类 603 8.1.18 Receive方法——由远程主机发送的UDP数据报 608 8.1.19 Send方法——将数据发送到连接的Socket 609 8.1.20 SerialPort类——控制串行端口文件资源 610 8.1.21 SMTP协议——进行邮件的传输 612 8.1.22 SmtpClient类——将电子邮件发送到SMTP服务器 614 8.1.23 Socket类——网络通信的操作类 616 8.1.24 TcpClient类——为TCP网络服务提供客户端连接 618 8.1.25 TcpListener类——从TCP网络客户端侦听连接 619 8.1.26 UdpClient类——用户数据报(UDP)网络服务 620 8.1.27 WebClient类——URI标识的资源发送和接收 623 8.1.28 WebRequest类——访问Internet数据 625 8.1.29 WebResponse类——协议特定的响应类 629 8.2 多线程编程 630 8.2.1 Abort方法——终止线程 630 8.2.2 BeginInvoke方法——线程上异步执行委托 631 8.2.3 EndInvoke方法——异步操作的返回值 632 8.2.4 Join方法——确保线程已终止 633 8.2.5 Kill方法——强制关闭进程 633 8.2.6 Process类——对正在计算机上运行的进程的访问 635 8.2.7 Sleep方法——线程挂起 640 8.2.8 Start方法——启动进程 640 8.2.9 Thread类——创建并控制线程的类 642 8.2.10 ThreadState属性——获取当前线程的状态 645 8.3 WMI技术——系统管理 646 8.3.1 MainWindowTitle属性——获取进程的主窗口标题 646 8.3.2 ManagementClass类——公共信息模型管理类 647 8.3.3 ManagementObject类——表示WMI实例 648 8.3.4 ManagementObjectSearcher类——查询检索管理对象 650 8.3.5 ManagementScope类——管理操作的范围 651 8.3.6 Microsoft.Win32命名空间——操作注册表类 652 8.3.7 WndProc方法——处理Windows消息 654 8.4 其他高级技术 655 8.4.1 Children属性——获取节点的子项 655 8.4.2 COM+服务——为类的实例提供服务 655 8.4.3 DirectShow技术——流媒体处理的一个开发包 656 8.4.4 DLL组件——动态链接库 663 8.4.5 MVC开发模式——模型视图控制器 664 8.4.6 VFW技术——视频应用程序提供的软件工具包 666 8.4.7 XML——定义其他标识语言的元标识语言 668 8.4.8 XmlReader类——XML读取器 670 8.4.9 XmlWriter类——XML编写器 673 附录——字母索引 676
此为完整版去密码锁定版,可自由编辑打印,共三部分,此为I部分 原书名: Microsoft Visual C# 2010 Step by Step 原出版社: Microsoft Press 作者: (英)John Sharp 译者: 周靖 丛书名: 微软技术丛书 出版社:清华大学出版社 ISBN:9787302234289 上架时间:2010-9-6 出版日期:2010 年8月 开本:16开 页码:652 版次:1-1 所属分类:计算机 > 软件与程序设计 > C# 内容简介 书籍 计算机书籍   c#作为微软的旗舰编程语言,深受程序员喜爱,是他们编写高效应用程序的首选语言。visual c# 2010新增了大量可圈可点的丰富特性,本书围绕着基础知识和这些新特性全面介绍了如何利用visual studio 2010和.net framework 4.0编写应用程序。书中沿袭深受读者欢迎的step by step风格,通过丰富的练习引导读者逐步构建windows应用程序,访问sql server数据库,开发asp.net web应用程序,创建并使用web服务等。   全书共29章,结构清晰,叙述清楚。所有练习均在visual studio 2010简体中文版上进行过全面演练。无论是刚开始接触面向对象编程的新手,还是打算转移到c#的具有c,c++或者java基础的程序员,都可以从本书中吸取到新的知识。 作译者 john sharp,content master首席技术专家。content master隶属于cm集团,cm集团是英国一家从事技术文档创作和咨询的专业公司。john sharp是负责net framework和互操作性问题的专家,已经针对分布式系统、web服务和c#语言发布了大量相关的教程、白皮书和演示文档。他具有丰富 目录 第i部分 visual c#和visual studio 2010概述 第1章 欢迎进入c#编程世界 3 1.1 开始在visual studio 2010环境中编程 3 1.2 编写第一个程序 8 1.3 使用命名空间 12 1.4 创建图形应用程序 15 第1章快速参考 22 第2章 使用变量、操作符和表达式 25 2.1 理解语句 25 2.2 使用标识符 26 2.3 使用变量 27 2.3.1 命名变量 27 2.3.2 声明变量 28 2.4 使用基本数据类型 28 2.4.1 未赋值的局部变量 29 2.4.2 显示基本数据类型值 29 2.5 使用算术操作符 33 2.5.1 操作符和数据类型 33 2.5.2 深入了解算术操作符 35 2.5.3 控制优先级 37 .2.5.4 使用结合性对表达式进行求值 38 2.5.5 结合性和赋值操作符 38 2.6 变量的递增和递减 39 2.7 声明隐式类型的局部变量 40 第2章快速参考 42 第3章 方法和作用域 43 3.1 创建方法 43 3.1.1 声明方法 43 3.1.2 从方法返回数据 44 3.1.3 调用方法 46 3.2 使用作用域 48 3.2.1 定义局部作用域 48 3.2.2 定义类的作用域 49 3.2.3 重载方法 50 3.3 编写方法 50 3.4 使用可选参数和命名参数 57 3.4.1 定义可选参数 58 3.4.2 传递命名参数 58 3.4.3 消除可选参数和命名参数的歧义 59 第3章快速参考 63 第4章 使用决策语句 65 4.1 声明布尔变量 65 4.2 使用布尔操作符 66 4.2.1 理解相等和关系操作符 66 4.2.2 理解条件逻辑操作符 66 4.2.3 短路求值 67 4.2.4 操作符的优先级和结合性总结 68 4.3 使用if语句来做出决策 68 4.3.1 理解if语句的语法 69 4.3.2 使用代码块来对语句进行分组 70 4.3.3 嵌套if语句 70 4.4 使用switch语句 75 4.4.1 理解switch语句的语法 75 4.4.2 遵守switch语句的规则 76 第4章快速参考 79 第5章 使用复合赋值和循环语句 81 5.1 使用复合赋值操作符 81 5.2 使用while语句 82 5.3 编写for语句 86 5.4 编写do语句 88 第5章快速参考 95 第6章 管理错误和异常 97 6.1 处理错误 97 6.2 尝试执行代码和捕捉异常 98 6.2.1 未处理的异常 99 6.2.2 使用多个catch处理程序 100 6.2.3 捕捉多个异常 100 6.3 使用checked和unchecked整数运算 104 6.3.1 编写checked语句 105 6.3.2 编写checked表达式 106 6.4 抛出异常 107 6.5 使用finally块 111 第6章快速参考 112 第ii部分 理解c#语言 第7章 创建并管理类和对象 117 7.1 理解分类 117 7.2 封装的目的 118 7.3 定义并使用类 118 7.4 控制可访问性 119 7.4.1 使用构造器 120 7.4.2 重载构造器 121 7.5 理解静态方法和数据 128 7.5.1 创建共享字段 129 7.5.2 使用const关键字创建静态字段 130 7.5.3 静态类 130 7.5.4 匿名类 132 第7章快速参考 134 第8章 理解值和引用 135 8.1 复制值类型的变量和类 135 8.2 理解null值和可空类型 139 8.2.1 使用可空类型 140 8.2.2 理解可为空类型的属性 141 8.3 使用ref和out参数 142 8.3.1 创建ref参数 142 8.3.2 创建out参数 143 8.4 计算机内存的组织方式 145 8.5 system.object类 147 8.6 装箱 147 8.7 拆箱 148 8.8 数据类型的安全转换 149 8.8.1 is操作符 150 8.8.2 as操作符 150 第8章快速参考 152 第9章 使用枚举和结构来创建值类型 155 9.1 使用枚举 155 9.1.1 声明枚举 155 9.1.2 使用枚举 156 9.1.3 选择枚举文字常量值 157 9.1.4 选择枚举的基本类型 157 9.2 使用结构 159 9.2.1 声明结构 161 9.2.2 理解结构和类的区别 162 9.2.3 声明结构变量 163 9.2.4 理解结构的初始化 164 9.2.5 复制结构变量 167 第9章快速参考 170 第10章 使用数组和集合 171 10.1 什么是数组 171 10.1.1 声明数组变量 171 10.1.2 创建数组实例 172 10.1.3 初始化数组变量 173 10.1.4 创建隐式类型的数组 173 10.1.5 访问单独的数组元素 174 10.1.6 遍历数组 175 10.1.7 复制数组 176 10.1.8 使用多维数组 177 10.1.9 使用数组来玩牌 178 10.2 什么是集合类 184 10.2.1 arraylist集合类 185 10.2.2 queue集合类 187 10.2.3 stack集合类 188 10.2.4 hashtable集合类 189 10.2.5 sortedlist集合类 190 10.2.6 使用集合初始化器 191 10.2.7 比较数组和集合 192 10.2.8 使用集合类来玩牌 192 第10章快速参考 195 第11章 理解参数数组 197 11.1 使用数组参数 199 11.1.1 声明params数组 200 11.1.2 使用params object[] 201 11.1.3 使用params数组 203 11.2 比较参数数组和可选参数 205 第11章快速参考 207 第12章 使用继承 207 12.1 什么是继承 207 12.2 使用继承 208 12.2.1 调用基类构造器 209 12.2.2 类的赋值 210 12.2.3 声明new方法 212 12.2.4 声明virtual方法 213 12.2.5 声明override方法 214 12.2.6 理解protected访问 217 12.3 理解扩展方法 222 第12章快速参考 225 第13章 创建接口和定义抽象类 227 13.1 理解接口 227 13.1.1 定义接口 228 13.1.2 实现接口 228 13.1.3 通过接口来引用一个类 230 13.1.4 使用多个接口 230 13.1.5 显式实现接口 230 13.1.6 接口的限制 232 13.1.7 定义和使用接口 233 13.2 抽象类 241 13.3 密封类 243 13.3.1 密封方法 243 13.3.2 实现并使用一个抽象类 243 第13章快速参考 248 第14章 使用垃圾回收和资源管理 251 14.1 对象的生存期 251 14.1.1 编写析构器 252 14.1.2 为什么要使用垃圾回收器 254 14.1.3 垃圾回收器的工作机理 255 14.1.4 慎用析构器 255 14.2 资源管理 256 14.2.1 disposal方法 256 14.2.2 异常安全的disposal方法 257 14.2.3 using语句 257 14.2.4 从析构器中调用dispose方法 259 14.3 实现异常安全的disposal 260 第14章快速参考 263 第iii部分 创 建 组 件 第15章 实现属性以访问字段 267 15.1 使用方法来实现封装 267 15.2 什么是属性 269 15.2.1 使用属性 271 15.2.2 只读属性 271 15.2.3 只写属性 272 15.2.4 属性的可访问性 272 15.3 理解属性的局限性 273 15.4 在接口中声明属性 275 15.5 生成自动属性 277 15.6 使用属性来初始化对象 279 第15章快速参考 283 第16章 使用索引器 285 16.1 什么是索引器 285 16.1.1 没有使用索引器的例子 285 16.1.2 使用索引器的同一个例子 287 16.1.3 理解索引器的accessor 289 16.1.4 对比索引器和数组 290 16.2 接口中的索引器 292 16.3 在windows应用程序中使用索引器 293 第16章快速参考 297 第17章 中断程序流程并处理事件 299 17.1 声明和使用委托 299 17.1.1 自动化工厂的例子 300 17.1.2 不使用委托来实现工厂 300 17.1.3 使用委托来实现工厂 301 17.1.4 使用委托 303 17.2 lambda表达式和委托 308 17.2.1 创建方法适配器 308 17.2.2 将lambda表达式作为适配器使用 309 17.2.3 lambda表达式的形式 309 17.3 启用事件通知 311 17.3.1 声明事件 311 17.3.2 订阅事件 312 17.3.3 取消订阅事件 313 17.3.4 引发事件 313 17.4 理解wpf用户界面事件 313 第17章快速参考 319 第18章 泛型概述 321 18.1 object存在的问题 321 18.2 泛型解决方案 323 18.2.1 对比泛型类与泛化类 325 18.2.2 泛型和约束 325 18.3 创建泛型类 325 18.3.1 二叉树理论 325 18.3.2 使用泛型构造二叉树类 328 18.4 创建泛型方法 337 18.5 可变性和泛型接口 340 18.5.1 协变接口 341 18.5.2 逆变接口 343 第18章快速参考 345 第19章 枚举集合 347 19.1 枚举集合中的元素 347 19.1.1 手动实现枚举器 348 19.1.2 实现ienumerable接口 352 19.2 使用迭代器来实现枚举器 354 19.2.1 一个简单的迭代器 354 19.2.2 使用迭代器为tree(titem) 类定义枚举器 356 第19章快速参考 358 第20章 使用查询表达式来查询内存中的数据 361 20.1 什么是语言集成查询 361 20.2 在c#应用程序中使用linq 362 20.2.1 选择数据 363 20.2.2 筛选数据 366 20.2.3 排序、分组和聚合数据 366 20.2.4 联接数据 368 20.2.5 使用查询操作符 370 20.2.6 查询tree(titem)对象中的数据 372 20.2.7 linq和推迟求值 377 第20章快速参考 380 第21章 操作符重载 383 21.1 理解操作符 383 21.1.1 操作符的限制 384 21.1.2 重载的操作符 384 21.1.3 创建对称操作符 385 21.2 理解复合赋值 387 21.3 声明递增操作符和递减操作符 388 21.4 比较结构和类中的操作符 389 21.5 定义操作符对 390 21.6 实现操作符 391 21.7 理解转换操作符 397 21.7.1 提供内建转换 397 21.7.2 实现用户自定义的转换操作符 398 21.7.3 再论创建对称操作符 399 21.7.4 添加隐式转换操作符 399 第21章快速参考 402 第iv部分 操纵windows应用程序 第22章 windows presentation foundation概述 405 22.1 创建wpf应用程序 405 22.2 在窗体上添加控件 418 22.2.1 使用wpf控件 418 22.2.2 动态更改属性 425 22.3 处理wpf窗体中的事件 429 第22章快速参考 434 第23章 收集用户输入 437 23.1 菜单设计原则和样式 437 23.2 菜单和菜单事件 438 23.2.1 创建菜单 438 23.2.2 处理菜单事件 443 23.3 快捷菜单 449 23.4 windows通用对话框 453 23.5 增强wpf应用程序的响应能力 456 第23章快速参考 464 第24章 执行校验 467 24.1 验证数据 467 用户输入验证策略 467 24.2 示例:订票系统 468 24.2.1 使用数据绑定执行校验 469 24.2.2 改变校验时机 484 第24章快速参考 487 第v部分 管 理 数 据 第25章 查询数据库中的信息 491 25.1 使用ado.net查询数据库 491 25.1.1 northwind数据库 492 25.1.2 创建数据库 492 25.1.3 使用ado.net查询订单信息 494 25.2 使用linq to sql查询数据库 503 25.2.1 定义实体类 503 25.2.2 创建并运行linq to sql查询 505 25.2.3 推迟取回和立即取回 507 25.2.4 联接表和创建关系 507 25.2.5 再论推迟取回和立即取回 511 25.2.6 定义自定义的datacontxt类 512 25.2.7 用linq to sql查询订单信息 513 第25章快速参考 517 第26章 使用实体框架和数据绑定显示和编辑数据 519 26.1 通过实体框架进行数据绑定 520 26.2 通过数据绑定修改数据 534 26.2.1 更新现有数据 534 26.2.2 处理冲突的更新 535 26.2.3 添加和删除数据 537 第26章快速参考 545 第vi部分 使用visual studio 2010构建专业解决方案 第27章 任务并行库入门 549 27.1 为何使用并行处理来执行多任务处理 550 27.2 在桌面应用程序中实现多任务处理 551 27.2.1 任务、线程和线程池 552 27.2.2 创建、运行和控制任务 553 27.2.3 使用task类实现并行处理 557 27.2.4 使用parallel类对任务进行抽象 564 27.2.5 什么时候不使用parallel类 568 27.2.6 从任务返回值 571 27.3 任务和ui线程一起使用 574 27.4 取消任务和处理异常 578 27.4.1 协作式取消的原理 578 27.4.2 使用aggregateexception类处理任务异常 586 27.4.3 为canceled和faulted任务使用延续任务 589 第27章快速参考 590 第28章 执行并行数据访问 593 28.1 用plinq并行进行声明式 数据访问 593 28.1.1 用plinq增强遍历集合时的性能 594 28.1.2 指定plinq查询选项 598 28.1.3 取消plinq查询 598 28.2 同步并发的命令式数据访问 599 28.2.1 锁定数据 602 28.2.2 tpl提供的同步基元 603 28.2.3 取消和同步基元 609 28.2.4 并发集合类 609 28.2.5 使用并发集合和锁来实现线程安全的数据访问 611 第28章快速参考 620 第29章 创建和使用web服务 623 29.1 web服务的定义 623 29.2 web服务架构 624 29.2.1 soap web服务 625 29.2.2 rest web服务 627 29.3 构建web服务 628 29.3.1 创建productinformation soap web服务 628 29.3.2 soap web服务、客户端 和代理 635 29.3.3 消费productinformation soap web服务 636 29.3.4 创建productdetails rest web服务 641 28.3.5 使用productdetails rest web服务 647 第29章快速参考 651
第1章 C#编程基础  实例1 Hello C#!  实例2 HeyGuy  实例3 预定义类型  实例4 类型转换  实例5 选择语句  实例6 循环语句  实例7 跳转语句  实例8 数组  实例9 枚举与结构类型  实例10 类  实例11 位运算  实例12 操作符重载  实例13 虚方法  实例14 委托  实例15 属性  实例16 异常处理  实例17 链表  实例18 回文数  实例19 汉诺塔  实例20 冒泡排序  实例21 插入排序  小结 第2章 界面编程  实例22 Hello Form  实例23 主菜单  实例24 上下文菜单  实例25 工具栏  实例26 状态栏  实例27 进度条  实例28 滑块控件  实例29 单选框和复选框  实例30 列表框和组合框  实例31 列表视图  实例32 树视图  实例33 Timer控件  实例34 Splitter控件  实例35 时钟控件和日历控件  实例36 MDI窗口  实例37 窗体继承  实例38 自制控件  实例39 使用自制控件  实例40 模式与非模式  实例41 会跑的按钮  实例42 绘制背景  实例43 可调窗口  实例44 托动窗体  实例45 电子便条  实例46 计算器界面设计  实例47 计算器功能实现  实例48 小闹钟  小结 第3章 图形与图像处理  实例49 简单画图  实例50 使用OnPaint绘制图形  实例51 绘制贝赛尔曲线  实例52 显示图像  实例53 消除图片背景  实例54 底片滤镜  实例55 浮雕效果  实例56 显示字体  实例57 特效字  实例58 旋转图片  实例59 打印  小结 第4章 线程 第5章 文件处理和系统操作 第6章 数据库编程 第7章 网络编程 第8章 Web应用程序的开发 第9章 多媒体 第10章 安全性 第11章 设计模式 第12章 杂例
第1章 C#编程基础  实例1 Hello C#!  实例2 HeyGuy  实例3 预定义类型  实例4 类型转换  实例5 选择语句  实例6 循环语句  实例7 跳转语句  实例8 数组  实例9 枚举与结构类型  实例10 类  实例11 位运算  实例12 操作符重载  实例13 虚方法  实例14 委托  实例15 属性  实例16 异常处理  实例17 链表  实例18 回文数  实例19 汉诺塔  实例20 冒泡排序  实例21 插入排序  小结 第2章 界面编程  实例22 Hello Form  实例23 主菜单  实例24 上下文菜单  实例25 工具栏  实例26 状态栏  实例27 进度条  实例28 滑块控件  实例29 单选框和复选框  实例30 列表框和组合框  实例31 列表视图  实例32 树视图  实例33 Timer控件  实例34 Splitter控件  实例35 时钟控件和日历控件  实例36 MDI窗口  实例37 窗体继承  实例38 自制控件  实例39 使用自制控件  实例40 模式与非模式  实例41 会跑的按钮  实例42 绘制背景  实例43 可调窗口  实例44 托动窗体  实例45 电子便条  实例46 计算器界面设计  实例47 计算器功能实现  实例48 小闹钟  小结 第3章 图形与图像处理  实例49 简单画图  实例50 使用OnPaint绘制图形  实例51 绘制贝赛尔曲线  实例52 显示图像  实例53 消除图片背景  实例54 底片滤镜  实例55 浮雕效果  实例56 显示字体  实例57 特效字  实例58 旋转图片  实例59 打印  小结 第4章 线程 第5章 文件处理和系统操作 第6章 数据库编程 第7章 网络编程 第8章 Web应用程序的开发 第9章 多媒体 第10章 安全性 第11章 设计模式 第12章 杂例

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧