取出richTextBox里面的内容第一种方法:将richTextBox的内容以字符串的形式取出string xw = System.Windows.Markup.XamlWriter.Save(richTextBox.Document);第二种方法:将richTextBox的类容以二进制数据的方法取出FlowDocument document = richTextBox.Document;System.IO.Stream s = new System.IO.MemoryStream(); System.Windows.Markup.XamlWriter.Save(document, s); byte[] data = new byte[s.Length];s.Position = 0;s.Read(data, 0, data.Length);s.Close(); 赋值给richTextBox 第一种方法:将字符串转换为数据流赋值给richTextBox中 System.IO.StringReader sr = new System.IO.StringReader(xw);System.Xml.XmlReader xr = System.Xml.XmlReader.Create(sr);richTextBox1.Document = (FlowDocument)System.Windows.Markup.XamlReader.Load(xr);第二种方法:将二进制数据赋值给richTextBoxSystem.IO.Stream ss = new System.IO.MemoryStream(data);FlowDocument doc = System.Windows.Markup.XamlReader.Load(ss) as FlowDocument;ss.Close();richTextBox1.Document = doc; 清空RichTextBox的方法 System.Windows.Documents.FlowDocument doc = richTextBox.Document;doc.Blocks.Clear(); 如何将一个String类型的字符串赋值给richTextBoxmyRTB.Document = new FlowDocument(new Paragraph(new Run(myString))); FlowDocument doc = new FlowDocument();Paragraph p = new Paragraph(); // Paragraph 类似于 html 的 P 标签Run r = new Run(myString); // Run 是一个 Inline 的标签p.Inlines.Add(r);doc.Blocks.Add(p);myRTB.Document = […]
View Details给大家讲到WPF,我们就不得不提到WinForm,51CTO之前也报导过《WPF与WinForm对比谈 多线程编程优化是关键》的技术文章,对于他们之间的优劣有了更深刻的认识。而今天我们要讲到的是WPF 4中的DataGrid空间。我们也诚挚向您推荐《让你的代码“炫”起来——WPF开发教程》。 提到DataGrid 不管是网页还是应用程序开发都会频繁使用。通过它我们可以灵活的在行与列间显示各种数据。本篇将详细介绍WPF 4 中DataGrid 的相关功能。 自定义列 默认情况下,当我们为DataGrid 控件设置ItemSource 属性后,DataGrid 会根据数据类型自动生成相应的列,下表列出DataGrid 支持的四种列及其数据类型。 在创建DataGrid 时可以通过AutoGenerateColumns 属性设置列是否自动生成,从而加入自定义列。如果DataGrid 中同时包含“自动生成列”与“用户自定义列”,则首先创建“用户自定义列”。下面代码实例中分别创建这四种列:
1 |
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">Window</span><span> </span><span class="attribute">x:Class</span><span>=</span><span class="attribute-value">"WPF4ControlTest.MainWindow"</span><span> </span></span></li><li><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">"http://schemas.microsoft.com/winfx/2006/xaml/presentation"</span><span> </span></li><li class="alt"><span> </span><span class="attribute">xmlns:x</span><span>=</span><span class="attribute-value">"http://schemas.microsoft.com/winfx/2006/xaml"</span><span> </span></li><li><span> </span><span class="attribute">xmlns:local</span><span>=</span><span class="attribute-value">"clr-namespace:WPF4ControlTest"</span><span> </span></li><li class="alt"><span> </span><span class="attribute">xmlns:assembly</span><span>=</span><span class="attribute-value">"clr-namespace:System;assembly=mscorlib"</span><span> </span></li><li><span> </span><span class="attribute">Title</span><span>=</span><span class="attribute-value">"MainWindow"</span><span> </span><span class="attribute">Height</span><span>=</span><span class="attribute-value">"200"</span><span> </span><span class="attribute">Width</span><span>=</span><span class="attribute-value">"500"</span><span class="tag">></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">Window.Resources</span><span class="tag">></span><span> </span></li><li><span> </span><span class="tag"><</span><span class="tag-name">ObjectDataProvider</span><span> </span><span class="attribute">x:Key</span><span>=</span><span class="attribute-value">"sexEnum"</span><span> </span><span class="attribute">MethodName</span><span>=</span><span class="attribute-value">"GetValues"</span><span> </span></li><li class="alt"><span> </span><span class="attribute">ObjectType</span><span>=</span><span class="attribute-value">"{x:Type assembly:Enum}"</span><span class="tag">></span><span> </span></li><li><span> </span><span class="tag"><</span><span class="tag-name">ObjectDataProvider.MethodParameters</span><span class="tag">></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">x:Type</span><span> </span><span class="attribute">Type</span><span>=</span><span class="attribute-value">"local:SexOpt"</span><span class="tag">/></span><span> </span></li><li><span> </span><span class="tag"></</span><span class="tag-name">ObjectDataProvider.MethodParameters</span><span class="tag">></span><span> </span></li><li class="alt"><span> </span><span class="tag"></</span><span class="tag-name">ObjectDataProvider</span><span class="tag">></span><span> </span></li><li><span> </span><span class="tag"></</span><span class="tag-name">Window.Resources</span><span class="tag">></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">Grid</span><span class="tag">></span><span> </span></li><li><span> </span><span class="tag"><</span><span class="tag-name">DataGrid</span><span> </span><span class="attribute">x:Name</span><span>=</span><span class="attribute-value">"dataGrid"</span><span> </span><span class="attribute">ItemsSource</span><span>=</span><span class="attribute-value">"{Binding}"</span><span> </span><span class="attribute">AutoGenerateColumns</span><span>=</span><span class="attribute-value">"False"</span><span class="tag">></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">DataGrid.Columns</span><span class="tag">></span><span> </span></li><li><span> </span><span class="tag"><</span><span class="tag-name">DataGridTextColumn</span><span> </span><span class="attribute">Header</span><span>=</span><span class="attribute-value">"Name"</span><span> </span><span class="attribute">Width</span><span>=</span><span class="attribute-value">"80"</span><span> </span><span class="attribute">Binding</span><span>=</span><span class="attribute-value">"{Binding Name}"</span><span class="tag">/></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">DataGridTextColumn</span><span> </span><span class="attribute">Header</span><span>=</span><span class="attribute-value">"Age"</span><span> </span><span class="attribute">Width</span><span>=</span><span class="attribute-value">"50"</span><span> </span><span class="attribute">Binding</span><span>=</span><span class="attribute-value">"{Binding Age}"</span><span class="tag">/></span><span> </span></li><li><span> </span><span class="tag"><</span><span class="tag-name">DataGridComboBoxColumn</span><span> </span><span class="attribute">Width</span><span>=</span><span class="attribute-value">"80"</span><span> </span><span class="attribute">Header</span><span>=</span><span class="attribute-value">"Sex"</span><span> </span></li><li class="alt"><span> </span><span class="attribute">SelectedItemBinding</span><span>=</span><span class="attribute-value">"{Binding Sex}"</span><span> </span></li><li><span> </span><span class="attribute">ItemsSource</span><span>=</span><span class="attribute-value">"{Binding Source={StaticResource sexEnum}}"</span><span class="tag">/></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">DataGridCheckBoxColumn</span><span> </span><span class="attribute">Header</span><span>=</span><span class="attribute-value">"Pass Exam?"</span><span> </span><span class="attribute">Width</span><span>=</span><span class="attribute-value">"100"</span><span> </span></li><li><span> </span><span class="attribute">Binding</span><span>=</span><span class="attribute-value">"{Binding Pass}"</span><span class="tag">/></span><span> </span></li><li class="alt"><span> </span><span class="tag"><</span><span class="tag-name">DataGridHyperlinkColumn</span><span> </span><span class="attribute">Header</span><span>=</span><span class="attribute-value">"Email"</span><span> </span><span class="attribute">Width</span><span>=</span><span class="attribute-value">"150"</span><span> </span></li><li><span> </span><span class="attribute">Binding</span><span>=</span><span class="attribute-value">"{Binding Email}"</span><span class="tag">/></span><span> </span></li><li class="alt"><span> </span><span class="tag"></</span><span class="tag-name">DataGrid.Columns</span><span class="tag">></span><span> </span></li><li><span> </span><span class="tag"></</span><span class="tag-name">DataGrid</span><span class="tag">></span><span> </span></li><li class="alt"><span> </span><span class="tag"></</span><span class="tag-name">Grid</span><span class="tag">></span><span> </span></li><li><span class="tag"></</span><span class="tag-name">Window</span><span class="tag">></span><span> </span></li></ol> |
其中每列都包含各自的数值类型,在C# 中创建Member 类及SexOpt 枚举,并将memberData 数据绑定到DataGrid:
1 |
<ol class="dp-c"><li class="alt"><span><span class="keyword">using</span><span> System; </span></span></li><li><span class="keyword">using</span><span> System.Windows; </span></li><li class="alt"><span class="keyword">using</span><span> System.Collections.ObjectModel; </span></li><li><span> </span></li><li class="alt"><span class="keyword">namespace</span><span> WPF4ControlTest </span></li><li><span>{ </span></li><li class="alt"><span> </span><span class="comment">/// <summary> </span><span> </span></li><li><span> </span><span class="comment">/// Interaction logic for MainWindow.xaml </span><span> </span></li><li class="alt"><span> </span><span class="comment">/// </summary> </span><span> </span></li><li><span> </span><span class="keyword">public</span><span> partial </span><span class="keyword">class</span><span> MainWindow : Window </span></li><li class="alt"><span> { </span></li><li><span> </span><span class="keyword">public</span><span> MainWindow() </span></li><li class="alt"><span> { </span></li><li><span> InitializeComponent(); </span></li><li><span>ObservableCollection<Member> memberData = </span><span class="keyword">new</span><span> ObservableCollection<Member>(); </span></li><li><span> memberData.Add(</span><span class="keyword">new</span><span> Member() </span></li><li class="alt"><span> { </span></li><li><span> Name = </span><span class="string">"Joe"</span><span>, Age = </span><span class="string">"23"</span><span>, Sex = SexOpt.Male, </span></li><li class="alt"><span> Pass = </span><span class="keyword">true</span><span>, Email = </span><span class="keyword">new</span><span> Uri(</span><span class="string">"mailto:Joe@school.com"</span><span>) </span></li><li><span> }); </span></li><li class="alt"><span> memberData.Add(</span><span class="keyword">new</span><span> Member() </span></li><li><span> { </span></li><li class="alt"><span> Name = </span><span class="string">"Mike"</span><span>, Age = </span><span class="string">"20"</span><span>, </span></li><li><span> Sex = SexOpt.Male, Pass = </span><span class="keyword">false</span><span>, </span></li><li class="alt"><span> Email = </span><span class="keyword">new</span><span> Uri(</span><span class="string">"mailto:Mike@school.com"</span><span>) </span></li><li><span> }); </span></li><li class="alt"><span> memberData.Add(</span><span class="keyword">new</span><span> Member() </span></li><li><span> { </span></li><li class="alt"><span> Name = </span><span class="string">"Lucy"</span><span>, Age = </span><span class="string">"25"</span><span>, </span></li><li><span> Sex = SexOpt.Female, Pass = </span><span class="keyword">true</span><span>, </span></li><li class="alt"><span> Email = </span><span class="keyword">new</span><span> Uri(</span><span class="string">"mailto:Lucy@school.com"</span><span>) </span></li><li><span> }); </span></li><li class="alt"><span> dataGrid.DataContext = memberData; </span></li><li><span> } </span></li><li class="alt"><span> } </span></li><li><span> </span></li><li class="alt"><span> </span><span class="keyword">public</span><span> </span><span class="keyword">enum</span><span> SexOpt { Male, Female }; </span></li><li><span> </span></li><li class="alt"><span> </span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> Member </span></li><li><span> { </span></li><li class="alt"><span> </span><span class="keyword">public</span><span> </span><span class="keyword">string</span><span> Name { </span><span class="keyword">get</span><span>; </span><span class="keyword">set</span><span>; } </span></li><li><span> </span><span class="keyword">public</span><span> </span><span class="keyword">string</span><span> Age { </span><span class="keyword">get</span><span>; </span><span class="keyword">set</span><span>; } </span></li><li class="alt"><span> </span><span class="keyword">public</span><span> SexOpt Sex { </span><span class="keyword">get</span><span>; </span><span class="keyword">set</span><span>; } </span></li><li><span> </span><span class="keyword">public</span><span> </span><span class="keyword">bool</span><span> Pass { </span><span class="keyword">get</span><span>; </span><span class="keyword">set</span><span>; } </span></li><li class="alt"><span> </span><span class="keyword">public</span><span> Uri Email { </span><span class="keyword">get</span><span>; </span><span class="keyword">set</span><span>; } </span></li><li><span> } </span></li><li class="alt"><span>} </span></li></ol> |
这样我们就可以通过自定义列的方式创建出DataGrid: 选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改DataGrid 的选择模式。 SelectionUnit:包含Cell、FullRow 和CellOrRowHeader 三种单元选择模式。 ◆Cell:选择单元格; ◆FullRow:选择全行; ◆CellOrRowHeader:可选择单元格,也可以通过点击行首选择全行; SelectionMode:分为Extended 和Single 两种模式。 ◆Extended:选择多个单元(单元格或全行,由SelectionUnit 定义); ◆Single:选择唯一单元(单元格或全行,由SelectionUnit 定义);
1 |
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">DataGrid</span><span> </span><span class="attribute">x:Name</span><span>=</span><span class="attribute-value">"dataGrid"</span><span> </span><span class="attribute">ItemsSource</span><span>=</span><span class="attribute-value">"{Binding}"</span><span> </span><span class="attribute">AutoGenerateColumns</span><span>=</span><span class="attribute-value">"False"</span><span> </span></span></li><li><span> </span><span class="attribute">SelectionUnit</span><span>=</span><span class="attribute-value">"Cell"</span><span> </span><span class="attribute">SelectionMode</span><span>=</span><span class="attribute-value">"Extended"</span><span class="tag">></span><span>… … </span></li></ol> |
设置SelectionUnit 和SelectionMode 后的实例效果: 编辑 默认情况下,我们可以直接在DataGrid 中编辑数据(下表为相关的编辑命令),当然也可以通过IsReadOnly 属性将DataGrid 设置为只读方式。
1 |
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span class="tag-name">DataGrid</span><span> </span><span class="attribute">x:Name</span><span>=</span><span class="attribute-value">"dataGrid"</span><span> </span><span class="attribute">ItemsSource</span><span>=</span><span class="attribute-value">"{Binding}"</span><span> </span><span class="attribute">AutoGenerateColumns</span><span>=</span><span class="attribute-value">"False"</span><span> </span></span></li><li><span> </span><span class="attribute">SelectionUnit</span><span>=</span><span class="attribute-value">"Cell"</span><span> </span><span class="attribute">SelectionMode</span><span>=</span><span class="attribute-value">"Extended"</span><span> </span><span class="attribute">IsReadOnly</span><span>=</span><span class="attribute-value">"True"</span><span class="tag">></span><span>… … </span></li></ol> |
原文标题:WPF 4 DataGrid 控件(基本功能篇) 链接:http://www.cnblogs.com/gnielee/archive/2010/04/16/wpf4-datagrid-control-basic.html
View Details1.获取所有数据库名: SELECT Name FROM Master..SysDatabases ORDER BY Name 2.获取所有表名: SELECT Name FROM DatabaseName..SysObjects Where XType=’U' ORDER BY Name XType=’U':表示所有用户表; XType=’S':表示所有系统表; 3.获取所有字段名: SELECT Name FROM SysColumns WHERE id=Object_Id('TableName') access : 如果表存在,如何得到这个表? SELECT * FROM MSysObjects where name=’ExamResultTime ' and type=1 and flags=0 //得到该数据库中所有的表名 SELECT name FROM MSysObjects where type=1 and flags=0 转自:http://www.soaspx.com/dotnet/sql/mssql/sql2000/sqlserver2000_20091215_2051.html
View Details在WPF布局框架中,如果标签不设置布局属性,系统默认为填充模式。当然,我们可以通过一系列标签的属性来达到布局标签的作用。 最常见的属性是Width和Height,是指定标签的宽和高。 MinWidth,MinHeight是指标签的最小宽度和最小高度,即使父容器的宽和高小于这个数字,标签也保持这个值。 MaxWidth,MaxHeight是指标签的最大宽度和最大高度。 最小和最大Width,Height将将会在一个固的区间来调整标签的大小。 HorizontalAlignment是标签在当前容器中左中右的停靠。VerticalAlignment是标签在当前容器中上中下的停靠。这两种停靠都是建立在父容器内的,只有父容器内大于标签是才能看到效果。 Margin,是一个独特的属性,它的值有三种情况,单值,表示该标签距父容器四周的距,两个值,第一个值为标签距父容器左右的距离,第二个值是标签距父器上下的距离,四个值,分别距父容器左,上,右,下的距离。如果存在Width和Height属性,它们的优先级要高于Margin。但一般情况了,两种属性的设置不会同时出现,Width和Height更强调固态的值,Margin强调随性的值,但它距边缘是固定的。 Padding和Margin相似,不同的是Padding是指标签内容与标签边界的距离。 Panel.ZIndex是一个层次的属性,这个值表示标签本身在父容器上位于那一层,值越大,越位于上层。可以用Panel.SetZIndex(标签名, 3);来设置标签元素的层次。 RenderTransofrm是一个缩放的属性,就是对当前标签的直接缩放,例子如下: <Button Content="123" ;50" Height="20" Click="Button_Click" > <Button.RenderTransform> <ScaleTransform. ScaleX="0.5" ScaleY="0.5"> </ScaleTransform> </Button.RenderTransform> </Button> C#代码: button1.RenderTransform. = new ScaleTransform(2, 2); LayoutTransform是一个旋转的属性 <Button Name="button1" Content="123" ;50" Height="20" > <Button.LayoutTransform> <RotateTransform. Angle="45"></RotateTransform> </Button.LayoutTransform> </Button> C#代码: button1.LayoutTransform. = new RotateTransform(90); 转换的类型还有MatrixTransform,如 <Button Name="button1" Content="123" ;50" Height="20" > <Button.LayoutTransform> <MatrixTransform. Matrix="3, 1, 1, 3, 0, 0"></MatrixTransform> </Button.LayoutTransform> </Button> C#代码: button1.LayoutTransform. = new MatrixTransform(3, 1, 1, 3, 0, 0); 上面的转换是用矩阵的方式实现,下面从x和y轴上来建立转换: <Button.LayoutTransform> <SkewTransform. AngleX="30" AngleY="30" ></SkewTransform> </Button.LayoutTransform> C#代码: button1.LayoutTransform. = new SkewTransform(10, 30, […]
View Details