webapi怎么调用winformwebapi(CS)中的方法(cs是服务端必须先独立启动)

客户端项目类型设计为:winform(winform窗体项目类型)
服务器端项目类型设计为:asp.net mvc4& webapi
在这里分为项目运行和调试两种情况讨论:
&&&&&& 这种情况指的是服务器端项目已经开发完成,可以把其部署到iis中(http://localhost:8748)括号里是服务器端部署到iis上的访问地址,客户端访问服务器时要使用
调试的时候可以把客户端和服务器端创建在同一个解决方案下。调试步骤:先要运行服务器项目,然后在托盘里查看服务器的访问地址
把服务器访问地址赋值给我客户端,运行客户端访问服务器端即可。
二、创建服务器端项目
首先打开vs2012开发环境软件,
1、创建空白的解决方案
操作步骤:文件&》新建&》项目&》其他项目类型&》visual studio 解决方案
解决方案命名为:MyTest
2、创建服务器端
右键单击上一步创建的解决方案&》添加&》新建项目&》web--&asp.net mvc4 web应用程序(命名为:MyServer)--》web api(mvc项目模板)
3、添加webapi控制器
右键单击MyServer项目中的Controllers文件夹&》添加&》控制器(命名为User)--》空API控制器
在控制器中添加方法
& [HttpGet]
&&&&&&& public string GetUserInfo(string userName, string passWord)
&&&&&&&&&&& if (userName == "admin" && passWord == "123456")
&&&&&&&&&&& {
&&&&&&&&&&&&&&& return "success";
&&&&&&&&&&& }
&&&&&&&&&&& else
&&&&&&&&&&& {
&&&&&&&&&&&&&&& return "failed";
&&&&&&&&&&& }
另外在文件WebApiConfig中添加自定义的路由规则
& &&&&&config.Routes.MapHttpRoute(
&&&&&&&&&&& name: "MyApi",
&&&&&&&&&&& routeTemplate: "api/{controller}/{action}/{key}",
&&&&&&&&&&& defaults: new { key = RouteParameter.Optional }
&&&&&&& );
三、创建客户端(client)
右键单击解决方案&MyTest&&》添加&》新建项目&》Windows&》Windows窗体应用程序 (并命名为:MyClient)
在默认的窗体Form1上设计界面如下:
窗体form1的后台代码如下:
using System.Collections.G
using System.ComponentM
using System.D
using System.D
using System.L
using System.Net.H
using System.T
using System.Threading.T
using System.Windows.F
namespace MyClient
&&& public partial class Form1 : Form
&&&&&&& public Form1()
&&&&&&&&&&& InitializeComponent();
&&&&&&& private void btnSubmit_Click(object sender, EventArgs e)
&&&&&&&&&&& string userName = txName.Text.Trim();
&&&& &&&&&&&string passWord = txPwd.Text.Trim();
&&&&&&&&&&& string url = @"http://localhost:47673/api/File/GetUserInfo?userName=" + userName + "&passWord="+passW
&&&&&&&&&&& HttpClient client = new HttpClient();
&&&&&&&&&&& HttpResponseMessage response = client.GetAsync(url).R&&&&&&
&&&&&&&&&&& string str=& response.Content.ReadAsStringAsync().R
&&&&&&&&&&& MessageBox.Show(str);
&注意在客户端引用程序集 System.Net.H引用方法:右键单击MyClient中的引用文件夹&》添加引用&》程序集
同时在form1的后台代码中也要添加using System.Net.H引用
1、在vs2012中,选中服务器端项目,编译通过后,执行&开始执行(不调试)&
2、查看服务器的访问地址,方法如下图
&在托盘中右键单击IIS Express
把客户端后台代码中的访问地址URL替换为:
string url = @"http://localhost:8748/api/User/GetUserInfo?userName=" + userName + "&passWord="+passW
&3、启动客户端项目
在解决方案中,选中客户端项目(设为启动项目),MyClient启动调试即可
阅读(...) 评论()随着Web技术的发展,现在各种框架,前端的,后端的,数不胜数。全栈工程师的压力越来越大。
现在的前端的框架,既可以做各种Web,又可以做各种APP,前端框架更新换代越来越快,越来越多。
传统的模式
前端和后端进行调试,修改都非常麻烦。往往前端配合后端很痛苦,后端也嫌前端麻烦。
(无解,能动手解决的事,尽量别动嘴。办公室应该常备一些,绷带,止血条,速效救心丸等药品。为了阻止事态升级,办公室要加强刀具管制条例。)
前后端分离
前端根据事先约定好的文档,可以自己摸拟数据,然后开发,测试,调试UI,发布到线上时把API接口改成线上API接口,即可完事。
前端日后增加新功能,修改UI,自己修改,自己编译更新自己UI站点,发布线上只要调上线上API接口即可。并不需要麻烦到后端。两者工作进行分离。
后端需要跟前端商量好接口,写好接口文档,在接口功能上相互沟通(其实相当于需求相互沟通),一旦接口文档订好之后,只需按事先约定实现API接口即口。把项目编译好发布到线上服务器。即可完事。
后端实现WebApi接口,还可以面对各种调用,如PC端web,手机APP,或者其它设备。一个接口多种调用,实现代码去重。
工作模式分析
对前端和后端进行分离。各司其职,各自在自己的领域集中精力研究。更能有效的加深技术深度。
前后端分离的模式,你需要N名前端工程师和N名后端工程师。
首先我们要约定一些返回基本的格式,比如用XML,还是JSON。结果大多数前端都是喜欢JSON,因为JS天生就支持JSON。我贴出一些示例代码
"ResultCode": 1300,
"Message":"权限不足",
"Data":null,
"ResultCode": 1600,
"Message":"逻辑异常",
"Data":null,
"DetailError":{
"ErrCode":1601001,
"ErrMsg":"金额必须大于&0"
返回参数说明
ResultCode
DetailError
ResultCode
ResultCode
服务器异常
身份验证异常
传递参数验证不通过
业务逻辑异常
系统成升级中
该接口己弃用
这是一个有点争议的地方,有很多业务逻辑异常,出于对用户的友好提示。一些生涩难懂的错误提示,直接给到用户,用户一脸懵逼。但是后端却不能修改成友好提示,这样不方便调试,寻找问题原因。
一般来讲,前端可以自动修改友好提示给用户。
如果后端返回字符串,前端写死在代码中,万一,某一天后端认为这个描述更符合场景,修改的字符串。敌军还有30秒到达战场。
建议:尽量使用异常代码,大家可以看到上面贴出例子,就使用的异常代码。每种异常都有唯一编号,描述可以更改。但是编号不变。
用户异常(1601000)
账号/密码错误
账号被冰冻
原密码不对
&每个API都有一个版本,其实也是就针对APP,如果是WEB端的,都是直接升级的因为B/S结构本身就是存在升级方便的优势,只需要把服务端更新就可以了。
版本控制一般用两种方式
第一种:URL不变,版本写在HTTP标头内面。
第二种:版本写在URL上面。
本人推荐第二种,比较直接方便了解。示例:
http://www.xxx.com/版本号
当前版本号:v1
http://www.baidu.com/v1/UserSecurity/Login
现在流行的api风格比较多,最出名的就是restful风格。
按本人的经验,完全走restful风格是很困难的,可能也是水平问题,在团队内面也要考虑到其它成员的水平问题。我们目前API风格还是保留以前风格。
示例,V*代表版本号
http://xx.com/V*/UserSecurity/SignOut
使用 Post 方法在服务器上创建/修改/删除资源
使用 Get 方法从服务器检索某个资源或者资源集合
基本命名规则
使用骆驼式命名法-大驼峰法
前端站点和后端API布署到不同的站点,就会产生跨域问题。
什么是同源策略?
同源是域名,协议,端口相同。也就是说如果不同,则是非同源。
同源策略是浏览器的一基本的安全功能,非同源访问,浏览器会进行拒绝。
HMTL上面的SRC地址,你可以指定任何URL,表单提交,你可以提交到任何URL。
但是,你如果使用AJAX技术,就会受到同源策略的影响,拒绝提交。
现代浏览器几乎都支持跨域资源请求的一种方式。这种技术叫CORS(跨域资源共享)
CORS跨域分两种
第一种,简单跨域。
第二种,复杂跨域。
解决方案:HTTP输出标头增加如何节点
注意有前端框架版本,对安全要求较高,不能使用通配符*,要指定跨域域名。
Access-Control-Allow-Origin:*
下面节点可填,可不填,根据实际情况,自行决定。
Access-Control-Allow-Methods:GET,POST,OPTIONS
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:根据请求头的内容,填写
注意:复杂跨域比要简单跨域麻烦,更花费性能。因为复杂跨域在请求之前会先发一个options预请求,根据响应判断服务器是否支持跨域。也就是说,实际上请求了两次。
Cookies作用域
不同的站点,如何通用Cookies?
一般情况只需把cookies作用域设置顶级域名,浏览器会自动把cookies在访问子域名的时候捎上去。
示例,访问二级域名时候,cookies默认会被传送过去。
顶级域名:baidul.com
cookies作用域:.baidu.com
二级域名:
www.baidu.com
api.baidu.com
下面贴一些示例文档,其它的就不多讲啦
基本上,WebApi前后端分离的细节和注意点,都记录下来,还有更多的细节,需要读者在开发过程自己去寻找答案。随笔完毕!
阅读(...) 评论()随笔分类 - winform资料
摘要: dgv.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.F //设置列标题不换行// 设定包括Header和所有单元格的列宽自动调整dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCdgv.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.F //设置列标题不换行// 设定不包括Header所有单元格的行高自动调整dgv.AutoSizeRow
小锋神 阅读(4946) |
摘要: 最近在做android与C#录音并互相通信的小东西。但是卡在C#录音这儿了。找了好久,说的都是DirectX,可是我总是安装不上,这才找到了这个简单的录音方法。当然,如果你想要录得好并且处理音频,那还是用用DirectX吧!原文:http://www.cnblogs.com/zrx/archive//1343160.htmlusing System.Runtime.InteropS [DllImport(&winmm.dll&, EntryPoint = &mciSendString&, CharSe
小锋神 阅读(9622) |
摘要: 音频转换:1.转换amr到mp3:ffmpeg -i shenhuxi.amr amr2mp3.mp32.转换amr到wav:ffmpeg -acodec libamr_nb -i shenhuxi.amr amr2wav.wav3.转换mp3到wav:ffmpeg -i DING.mp3 -f wav test.wav4.转换wav到amr:ffmpeg -i test.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 wav2amr.amrffmpeg.exe -i PA003.wav -ar 8000 -ab 12.2k -ac 1 targe
小锋神 阅读(20507) |
摘要: 包含自动完成下拉框,字体下拉框,电脑盘符,多列下拉框,带CheckBox,树型下拉框等.代码主要来自CodeProject,版权属于原作者.1.带自动完成功能的下拉框(.net 1.1使用,.net 2.0微软自带的ComboBox已有该功能) AutoCompleteComboBox_src.zip2.带CheckBox允许多项选择的下拉框 CheckBoxComboBox.zip3.自定义绘制下拉框 HtmlDropDownList_src.zip4.下拉出DataGrid MultiColumnCombo_src.zip MultiColumnComboSuggestionBox.zip
小锋神 阅读(8758) |
摘要: 在Web的应用方面有js的插件实现自动完成(或叫智能提示)功能,但在WinForm窗体应用方面就没那么好了。TextBox控件本身是提供了一个自动提示功能,只要用上这三个属性: AutoCompleteCustomSource:AutoCompleteSource 属性设置为CustomSource 时要使用的 StringCollection。 AutoCompleteMode:指示文本框的文本完成行为。 AutoCompleteSource:自动完成源,可以是 AutoCompleteSource 的枚举值之一。 就行了, 一个简单的示例如下 复制代码 代码如下:textBox1.Auto
小锋神 阅读(377) |
摘要: 对C# WinForm开发系列收集的控件使用方面进行整理, 加入了一些文章, 不断补充充实, 完善这方面.基础 - 常用控件C# WinForm开发系列 - CheckBox/Button/Label/ProgressBarWinForm下CheckedListBox的数据绑定Winform 下无闪烁走马灯效果实现c#,winform,progressbar+labe,联动显示进度C# WinForm开发系列 – TextBox只能输入数字的TextBox---补充(C#)为 TextBox 控件增加一个限制最大字节数的属性c#,winform,验证输入内容,文本框,长度,errorprovi
小锋神 阅读(503) |
摘要: 一、简单回顾在前两节中,对Panel和GroupBox控件进行了相关的扩展应用,主要都是设置控件的边框以及边框颜色等。本节,继续对WinForm现有的控件TextBox进行扩展,来满足实际开发中的需要。二、TextBox扩展WinForm现有的TextBox控件功能已然相当强大了,但有些时候仍然不能满足一些实际开发的需要,本节针对开发中的需求问题,对控件进行了以下扩展:1、 和以往一样,设置控件的边框问题,主要有:边框颜色、边框粗细;2、 控件添加水印文字效果,可以设置水印文字颜色以及字体等;3、 实现控件对常规输入项的验证效果,比如:数字、电话号码、电子邮件等;对不符合规则的输入进行错误提示
小锋神 阅读(7780) |
摘要: DataTable dt = new DataTable(); dt.Columns.Add(&Name&); dt.Columns.Add(&VV&); dt.Rows.Add(new string[] { &王一&, &x& }); dt.Rows.Add(new string[] { &赵一&, &z& }); dt.Rows.Add(new string[] { &王二&, &y& }); dt.Rows.Add(new str
小锋神 阅读(407) |
摘要: 1:委托:父窗体; private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(); //frm.fatherform =//将当前窗体赋给fatherform //frm.getTextHandler += new Form2.GetTextHandler(getValue);//给事件赋值(注意:GetText方法的参数必须与GetTextHandler委托的参数一样,方可委托) ...
小锋神 阅读(326) |
摘要: 1:你可以重写DataGridView的OnRowPostPaint方法或者直接在DataGridView的RowPostPaint事件里写,如下(重写DataGridView的OnRowPostPaint方法)using Susing System.Tusing System.Windows.Fusing System.Dnamespace Test{ class DataGridViewEx : DataGridView { SolidBrush solidB public DataGridVie...
小锋神 阅读(9505) |
摘要: 将DataGridViewCellStyle的 WrapMode 属性设置为 DataGridViewTriState 枚举值之一。下面的代码示例使用System.Windows.Forms.DataGridView.DefaultCellStyle属性设置整个控件的换行模式Me.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.TrueDataGridView1.AutoSizeColumnsMode=DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader ///根据
小锋神 阅读(1693) |
摘要: 如图:代码就是如此简单文件下载:DataGridView单元格合并源码
小锋神 阅读(6833) |
摘要: 在用户控件中:.......publicdelegatevoidMessage_str(stringmessageText);publicpartialclassTEST2:UserControl{publiceventMessage_strMessage_ApublicTEST2(){InitializeComponent();this.button1.Click+=newEventHandler(button1_Click);}voidbutton1_Click(objectsender,EventArgse){Message_Arrived(textBox1.Text);}
小锋神 阅读(211) |
摘要: 本文来自http://hi.baidu.com/wingingbob/item/a2cb3fc0fe3bd1bb0d0a7b5b《WinForm IME输入法BUG测试》里,我描述了在.NET Framework 2.0的WinForm中,中文输入法的BUG。这个BUG由来已久,听说在最新的VS2010中也没有真正得到解决。在文章后面,我怀疑是那些产生此类BUG的中文输入法本身在设计上存在的缺陷,才导致了WinForm无法正确识别。不管怎么样,问题出了就得想办法解决,今天的方法是一个“简单而有效的”解决办法,就是在窗体加载时将输入法预置为ImeMode.OnHalf。最终的结果如上图所示,王码
小锋神 阅读(527) |
摘要: 欢迎C#高手加盟QQ群:9340166水晶报表VS2010版IDE安装标准版SAP Crystal Reports, version for Visual Studio 2010 - Standard:下载地址:http://downloads.businessobjects.com/akdlm/cr4vs2010/CRforVS_13_0_1.exe下载安装后打开VS2010就可以在左边工具栏中看到CRYSTALREPORTVIEWER,并且可以新建水晶报表了;用法跟以前版本的用法类似;不过要注意下面几点;a.运行环境不能为.NET FRAMEWORK 4.0 CLINET PROFILE,
小锋神 阅读(2513) |
摘要: 一:按钮事件,遍历所有节点private void button2_Click(object sender, EventArgs e) { foreach (TreeNode n in TreeView1.Nodes) { ErgodicTreeView(n); } }void ErgodicTreeView(TreeNode tn) { if (tn == null) //...
小锋神 阅读(7958) |
摘要: 推荐使用第6与第7方法1.通过构造函数特点:传值是单向的(不可以互相传值),实现简单实现代码如下:在窗体Form2中 int value1;string value2;public Form2 ( int value1 , string value2 ){ InitializeComponent ( ); this.value1 = value1; this.value2 = value2;}在窗体Form1中这样调用new Form2 ( 111 , &222& ).Show ( ); //这样就把111,&222&,这2个值传送给了Form2构造函数
小锋神 阅读(5468) |
摘要: /// &summary& /// Md5加密的方法 /// &/summary& /// &param name=&code&&几位加密&/param& /// &param name=&str&&&/param& /// &returns&&/returns& private string GetMd5(int code, string str) { string strmd5 = &&; byte[] result = Encodin
小锋神 阅读(845) |
摘要: 其实很简单用ThreadPool.RegisterWaitForSingleObject方法注册一个定时检查线程池的方法,在检查线程的方法内调用ThreadPool.GetAvailableThreads与ThreadPool.GetMaxThreads并比较两个方法返回的值是不是相等,相等表示线池内所有的线程已经完成.//每秒检次一次线程池的状态RegisteredWaitHandle rhw = ThreadPool.RegisterWaitForSingleObject(AutoResetEvent(false), this.CheckThreadPool, null, 1000, fa
小锋神 阅读(5846) |
摘要: 【引言】项目中经常使用DataTable,发现有好多东西,需要整理下.protectedvoidPage_Load(objectsender,EventArgse){//①CreateaDataTableDataTabledt=newDataTable(&Table_AX&);//②AddcolumnsforDataTable//Method1dt.Columns.Add(&column0&,System.Type.GetType(&System.String&));//Method2DataColumndc=newDataColum
小锋神 阅读(346) |
摘要: 有关LocalReport、DeviceInfo和PrintDocument的内容已经介绍得差不多了,稍后会给出一个继承自System.Drawing.Printing.PrintDocument的组件EMFStreamPrintDocument。但是现在,来看一下如何进行自定义纸张票据打印时的页面设置。页面设置窗体如下图所示: 如何添加、删除自定义大小的纸张、枚举系统的打印机?以前在博客园的一篇随笔中参加过讨论,见http://wormday.cnblogs.com/archive//302635.aspx。当然还是使用Win32 API,以下是我封装的一个关于打印机..
小锋神 阅读(2047) |
摘要: /// &summary& /// 下载文件 /// &/summary& /// &param name=&URL&&下载文件地址&/param& /// &param name=&Filename&&下载后的存放地址&/param& /// &param name=&Prog&&用于显示的进度条&/param& public void DownloadFile(string URL, string filename, System.Wi
小锋神 阅读(7724) |
摘要: 现在有两个窗体,窗体1和窗体2,单击窗体2的button可以得到一个值,现在想做到单击button时将取到的值赋给窗体1的textbox中,同时关闭窗体2定义事件 窗体2 public delegate void SampleEventDelegate(string s); public event SampleEventDelegate SampleE private void button1_Click(object sender, EventArgs e) ...
小锋神 阅读(548) |
摘要: 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(6)----全屏截图、图标获取、图片打印、页面预览截屏、图片复杂操作等俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。作为一个有多年开发经验的技术人员或者是初级的编程菜鸟,有着一些成熟、使用熟练的公用类库,能很高程度提升自己的软件开发能力和思维能力。另外,丰富的类库也是.NET的各种知识点的汇聚,经常查看优化,也是对自己能力深层次的提升。本篇继续公用类库系列的介绍,不同于前面几篇的主题,本篇主要介绍图片相关方面的类库操作,如果你对前面的类库介绍文章有兴趣,可以参考下面的连
小锋神 阅读(534) |
摘要: 用户输入查询与拼音首字母的结合,提高用户的操作体验我们在界面设计的时候,不管是Web的还是Winform的程序,为了方便用户对各种数据进行操作,提高用户的操作体验,都是一个永恒不变的话题,需要尽可能地提高。本文抛砖引玉,介绍本人在Web和Winform中使用拼音简码以及智能提示的具体例子,对这个话题进行探讨。在下面的Web界面中,我们可以通过拼音首字母或者部分中文内容,来模糊搜索(类似Google搜索的智能提示),一个方便用户搜索,第二个有效利用Ajax技术来提高用户的体验。用户可以输入中文,一样有智能提示。在Winform界面中,同样也可以做到智能提示,由于Winform中的响应速度比较快,
小锋神 阅读(328) |
摘要: 厚积薄发,丰富的公用类库积累,助你高效进行系统开发(4)----CSV、Excel、INI文件、独立存储等文件相关俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。继续前面的随笔系列,介绍公用类库的详细使用,既上篇介绍了数据库相关的操作内容后,本篇主要介绍文件相关的处理辅助类。本篇介绍的辅助类包括CSV操作辅助类,非VBA操作的Excel辅助类、常用文件操作辅助类、常用目录操作辅助类、打开及保存文件对话框操作辅助类、INI文件操作辅助类、监视文件变化的类、独立存储操作辅助类等文件相关的辅助类。1、CSV文件和DataTabl
小锋神 阅读(540) |
摘要: using Susing System.Collections.Gusing System.Dusing System.Tusing System.Text.RegularEusing System.Data.SqlCusing System.Cusing System.Nusing System.IO;namespace Common{ /// &summary& /// 数据库访问类 /// &/summary& public class MsSql {...
小锋神 阅读(417) |
摘要: QUpdater自动升级程序
小锋神 阅读(579) |
摘要: 在C#中,从Main()方法开始一个默认的线程,一般称之为主线程,如果在这个进行一些非常耗CPU的计算,那么UI界面就会被挂起而处于假死状态,也就是说无法和用户进行交互了,特别是要用类似进度条来实时显示一些提示信息的时候,这种情况就显得很糟糕。如果多开一些线程来完成一些耗时的计算,那么工作线程也是无法如此更新UI界面中的元素的,比如直接显示一个提示信息:label1.Text=outstring,原因很简单UI属于默认的主线程,而线程间是不能这样直接访问彼此的成员的。 如果要解决以上的两个问题,那么可以借助C#中的Delegate和控件类中的Invoke()方法来搞定。 这里给出的例子比较..
小锋神 阅读(4110) |
摘要: DevExpress 第三方控件汉化的全部代码和使用方法 DevExpress.XtraEditors.Controls此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等 DevExpress.XtraGrid网格 DevExpress.XtraBars菜单栏和工具栏 DevExpress.XtraNavBar导航条 DevExpress.XtraPrinting报表打印相关 DevExpress.XtraReports报表 DevExpress.XtraTreeList树 DevExpress.XtraVerticalGrid使用方法: 1.先将该类生成的Dll导入工程中 ,也可以不
小锋神 阅读(3249) |
摘要: winform 分页控件,源码下载http://files.cnblogs.com/nosnowwolf/Pager.rar控件下载以前都是从事B/S开发,由于公司有个比较大的C/S项目,在使用DATAGRIDVIEW的时候,显示数据量比较大,所以才用分页模式,也不知道这样是否正确。想找个C/S下面的分页控件,都没有什么好的,就自己跟B/S下的分页控件,修改成WINFORM下面的。首先创建一个用户控件名称为pager,在控件中拖入bindingNavigator和bindingSource,修改bindingNavigator,加入必要的一些控件。效果如下:代码实现如下:Code highli
小锋神 阅读(2267) |
摘要: 在程序中,分页总是永远的话题,因为数据总是很多很多,分页展示在程序性能和数据查看感官方面得到很好的平衡,是一种良好的编程习惯和UI设计。Winform中的分页控件可能没有Asp.net世界中的分页控件那么丰富多彩,不过也有不少的分页控件可以采用,各个人的可能都有一些不同的东西,一些好的东西。就我而言,我希望控件能够尽可能的多一些功能,耦合性低一些,例如我不想是基于存储过程的,因为我很多程序需要使用Access作为数据库,一般来说,我还希望有导出Excel数据的功能,还有打印预览功能,由于我的数据源表头,如实体类集合、表格内容绑定的时候,表头是英文的,我需要变为中文的,其他的功能有则更好。本篇介
小锋神 阅读(379) |
摘要: 俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力。就我们开发者而言,其中技巧的积累、资源的积累,就是类似一个个好汉、一根根好柴,是我们能够进行高效开发的保证和推动力,本文主要展示我所收藏的辅助类库,并着重介绍一些常用的类库给大家分享,一个提高大家对辅助类库积累的重视,二个也是能够和大家分享一些常用技巧的片段,促进沟通,共同进步。在介绍这些类库之前,先大致介绍一下背后的故事,这些类库是我从事软件开发,逐渐提炼和发现的一些闪光点或者好片段,有些事吸收别人的优秀的东西,有些是自己逐步提炼的精华,以前,在网络上看到一些开源的项目,总
小锋神 阅读(432) |
摘要: private void GetData(){ try { // Specify a connection string. Replace the given value with a // valid connection string for a Northwind SQL Server sample // database accessible to your system. String connectionString = &Integrated Security=SSPI;Persist S...
小锋神 阅读(196) |
摘要: 1:把项目中会调整program file86的 any CPUr换成X86其它的项目不需要变化。2:把Dubug中需要引用的文件也要拷过去,如XML文件,加密保密的文件
小锋神 阅读(398) |
摘要: 前段用C#做了个程序,现在要把程序支持64位系统。 首先是把该程序支持到 Windows Server 2003 和 Windows Server 2008两个系统,由于我的程序是在XP上测试编译的,直接拿过去不会出什么问题吧。 但是在运行的时候,老是报错。没办法,在Server 2003上装了VS,一步步调试,发现每当我执行到调用C++的dll时候,其中有一句就会报错: “尝试读取或写入受保护的内存。这通常指示其他内存已损坏” 但是我之前的几句调用dll的都执行通过了,而且在XP上也运行良好啊。 试了N久也不行,换参数等等方法也都以失败告终。 先不管了,用最笨的方法,你执行不通过...
小锋神 阅读(2286) |
摘要: 最近折腾采用第三方报表控件(DevExpress),开始采用的是 文件(.repx)读取的方式进行报表设计器的加载。实现方式如下:不设置文件复制到输出目录,是无法加载到该报表模块文件的。、DevExpress 采用二进制流保存模块,自定义Report报表最近折腾采用第三方报表控件(DevExpress),开始采用的是 文件(.repx)读取的方式进行报表设计器的加载。实现方式如下:不设置文件复制到输出目录,是无法加载到该报表模块文件的。 1 //获取datatable数据 2 CreateDataTable(); 3 DataSet ds = new DataSet(); 4 ds.Tabl.
小锋神 阅读(2607) |
摘要: XtraReport报表编辑器里的保存,是可以保存为一个文件的,所以它应该提供了一个从文件加载的方法,这时我们可以发现XtraReport里有一个LoadLayout的方法,可以加载报表文件,它的重载方法是可以从IO.Stream里加载报表文件,也就是说,我们可以进一步的把这个报表模板以二进制的方式保存在数据库里。需要的时候,从数据库调用即可。我们在设计XtraReport的模板的时候,重写它的析构方法,一个有传入数据源的,一个没有。代码如下:Developer Express 之 XtraReport如何动态绑定数据XtraReport报表编辑器里的保存,是可以保存为一个文件的,所以它应该提
小锋神 阅读(5003) |
摘要: Developer Express 之 XtraReport报表预览控件PrintControl设置代码如下:using Susing System.Collections.Gusing System.ComponentMusing System.Dusing System.Dusing System.Tusing System.Windows.Fusing DevExpress.XtraEusing DevExpress.XtraReports.UI;using DevExpress.XtraPrint
小锋神 阅读(3342) |
摘要: Developer Express 之 XtraReport如何显示设计窗体XtraReport的设计器,其实用XRDesignFormEx就可以。using Susing System.Collections.Gusing System.ComponentMusing System.Dusing System.Dusing System.Lusing System.Tusing System.Windows.Fusing DevExpress.XtraReports.UI;using DevExpress.X
小锋神 阅读(3349) |
摘要: 前两种方法和WinForm一样,可以传递参数、数组、实体对象、DataTable等1. 采用构造函数具体用法:在Report中public partial class XtraReport1 : DevExpress.XtraReports.UI.XtraReport{ private int test1; public Form1(int test1) { this.test1 = test1; InitializeComponent(); }}调用Reportint test1 = 1;XtraReport1 report = new XtraReport1(test1);report..
小锋神 阅读(3852) |
摘要: 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过。废话少说 开始正事本次内容分一下4个步骤:创建应用程序并添加报表构建报表输出报表查看运行结果一、创建应用程序 1、启动 MS Visual Studio (、或 2010)。 2、新建一个 Windows 窗体应用程序 (或者在 Visual Studio 2005 中新建 Windows 应用程序)。 3、在 项目 菜单中,选择
小锋神 阅读(447) |
摘要: 本文实现在winform项目实现网页div+css关透明效果,挺帅的,在网页中要实现div的半透明遮罩层效果不难,在winform项目就不是这么容易了,下面我们来看下效果图先: 正常时:文章来自学IT网:http://www.xueit.com/html//21-7.html下面我们来实现上图的效果控件源码:using Susing System.Collections.Gusing System.Tusing System.Dusing System.Windows.Fusing Syst.
小锋神 阅读(5512) |
摘要: //frmA: 源窗体//------------------------------------------//引用using System.T BackgroundW public frmA() { InitializeComponent(); worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandler(worker_DoWork); ...
小锋神 阅读(6072) |
摘要: 在前面有一篇文章中,逍遥一生已经介绍了如何在c#窗体程序中给控件添加右键菜单以及给不同的子菜单添加不同的事件: c#窗体(winform)程序给控件添加右键菜单及给不同子菜单添加不同事件的方法 在这篇文章中,逍遥一生将给大家介绍一下c#判断右键菜单(ContextMenuStrip)是从哪个控件弹出来的方法。 逍遥一生在用C#做一个网络教室程序的时候,需要在窗体上放本文来自逍遥一生:http://www.xiaoyaolife.com/两个Panel控件,里分分别有一个Label,分别是label1,text是192.168.1.2,和label2,text是192.168.1.3,代表客户.
小锋神 阅读(12611) |
摘要: 今天写程序的时候,用到了右键菜单控件ContextMenuStrip,真的很方便,写了几个菜单与子菜单项,本来是可以用双击来给每一个菜单添加事件的,不过,这样做似乎非常麻烦,而且对一些子菜单也不容易控制,于是想用遍历ContextMenuStrip的方法来分别给各个子菜单添加事件,可是百度了一下,发现这方面的资料居然很少,自己研究了以后,成功编写了这个功能,现在逍遥一生把代码贴出来,虽然很简单,但也希望后面的人少走些不必要的弯路,之所以说是弯路,是因为其实技术上没什么东西,就是一个foreach,只不过对象资料比较少罢了。废话少说,开工。 1、首先还是老一套,创建一个windows窗体应用..
小锋神 阅读(10914) |
摘要: Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。 一 关于Thread的说明 ...
小锋神 阅读(6987) |
摘要: 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。首先来看传统方法:public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(ThreadFuntion); thread.IsBackground = thread.Start()
小锋神 阅读(388) |
摘要: Dev的控件使用很简单,我分为了三步,按着这三步就可以实现最基本的柱状图 1.组织数据: 一般作统计分析的数据都是一些的综合数据,列比较固定我的数据(如图)2.代码如下:C# Code:chartControl1.Series.Clear();// 柱状图里的第一个柱 Series Series1 = new Series(&当年数据&, ViewType.Bar);Series1.DataSource =Series1.ArgumentScaleType = ScaleType.Q// 以哪个字段进行显示 Series1.Argument
小锋神 阅读(11370) |
摘要: 多线程访问控件在网上的方法有很多,这里只记录我用到的这个,其他的可以去网上搜索,很多。首先声明一个全局变量和一个委托类型(用来访问控件)01.private BackgroundWorker _bW 02.delegate void SetProgressBarDelegate(int value); 在一个按钮事件里面给这个workfer赋值一些属性01._bWorker = new BackgroundWorker(); 02. _bWorker.DoWork += new DoWorkEventHandler(bWorker_DoWork); 0...
小锋神 阅读(1096) |
摘要: 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。 首先来看传统方法: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(ThreadFuntion); thread.IsBackground = thread.Star.
小锋神 阅读(5558) |
摘要: 1. 如何安装服务?利用.Net Framework带的服务安装工具InstallUtil.exe,它位于c:\windows\Microsoft.Net\Framework\v1.1.4322\文件夹下。打开Visual Studio .Net 200* 命令提示,安装命令是:InstallUtil c:\test.exe (c:\test.exe则为需要安装的windows服务,如果路径上带空格,则需要在外面添加引号,例如:InstallUtil &c:\program files\test.exe&)如果是打开的Dos命令控制台,则需要在InstallUtil前,加上
小锋神 阅读(3095) |
摘要: 在项目开发中,我们可能有这样的需求,就是每隔一段时间,由系统来执行自己预先定义好的一些任务,比如说每隔多久检查一下系统中是否有待发送的邮件,随时监控一些文件的操作等,我们可以通过创建Windows服务程序来实现,关于Windows服务程序的详细介绍请看这篇文章:用Visual C#创建Windows服务程序。看了这篇文章之后,自己动手实践了一下,现在将自己的操作步骤记录如下:1.新建Windows项目,选择&Windows服务&类型的工程。2.生成的Program.cs文件中,定义了服务启动的Main函数。代码 Code highlighting produced by A
小锋神 阅读(1000) |
摘要: winform安装项目、安装包的制作、部署①1,解决方案—添加—新建项目—其他项目类型—安装和部署—安装项目,输入名称Setup,点“确定”2,添加主输出:单击左侧“应用程序文件夹”,右侧右键—添加—项目输出-主输出-确定。3,添加开始程序中的文件夹:右击左侧“用户的程序菜单”—添加—文件夹,自己设置名称。4,添加开始程序中和桌面的主程序快捷方式:左侧单击刚新建的文件夹--右侧右键—创建新的快捷方式--选择“应用程序文件夹---主输出--“确定” 左侧单击用户桌面--右侧右键—创建新的快捷方式---应用程序文件夹---主输出---确定5,设置程序图标:先把图标文件放到你的程序目录下---单击左
小锋神 阅读(326) |
摘要: 在用c#做WinFrom开发的过程中。我们经常需要用到进度条(ProgressBar)用于显示进度信息。这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口很容易假死(无法适时看到进度信息)。下面我就简单结合一个我写的例子给大家做一个介绍。第一步:设计界面不说了...注意需要引用 using System.T第二步:定义一个代理,用于更新ProgressBar的值(Value)//更新进度列表 privatedelegatevoid SetPos(int ipos); 第三步:进度条值更新函数(参数必须跟声明的代理参数一样)privatevoid SetText.
小锋神 阅读(899) |
摘要: 我做了个有“确定”和“取消”按钮的WinForm它ShowDialog()后如何做到: 点“确定”返回DialogResult.OK点“取消”返回DialogResult.Cancelbutton钮有属性 DialogResult将“确定”钮设为 &OK& “取消”钮设为&Cancel&就好Form上有 AcceptButton 属性,设为 &确定& 钮CancelButton 属性,设为&取消&钮//此处用于一个程序启动时弹出登陆框,如是在登陆框上点击取消按钮,则整个程序退出,如果不是,登陆正//确则关闭子窗体,
小锋神 阅读(21657) |
摘要: 在编程中经常会遇到在一个按钮中执行复杂操作,并将复杂操作最后返回的值加入一个ListView或ComboBox中候选。这个时候程序会卡,当程序员将这些卡代码放进线程(Thread)中后发现当对控件操作时出现“线程间操作无效: 从不是创建控件的线程访问它”异常。 为什么.net不让我们跨线程操作控件,这是有好处的。因为如果你的线程多了,那么当两个线程同时尝试将一个控件变为自己需要的状态时,线程的死锁就会发生。但是难道就是因为这个原因,我们就只能让程序卡着么?当然不是,这里教大家一个解决方案:用BackGroundWorker 这里通过一个实例来告诉大家BackGroundWorker的用...
小锋神 阅读(7304) |
摘要: Point FrmP=new Point(button1.Left,button1.Top);//ScreenP返回相对屏幕的坐标 Point ScreenP=this.PointToScreen(FrmP);
小锋神 阅读(323) |
摘要: dataGridView1.Rows[index].Selected = // 设置为选中.(index为选重的记录索引) dataGridView1.FirstDisplayedScrollingRowIndex = // 设置在当前区域的第一行显示
小锋神 阅读(299) |
摘要: 简介摘要:MessageBox.Show (String) 显示具有指定文本的消息框。由 .NET Compact Framework 支持。 MessageBox.Show (IWin32Window, String) 在指定对象的前面显示具有指定文本的消息框。 MessageBox.Show(String)显示具有指定文本的消息框。 由.NETCompactFramework支持。 MessageBox.Show(IWin32Window,String)在指定对象的前面显示具有指定文本的消息框。 MessageBox.Show(String,String)显示具有指定文本和标题的消...
小锋神 阅读(250) |
摘要: private void comboBox2_SelectedIndexChanged(object sender, EventArgs e) { string a = ((ComboBoxItem)comboBox2.SelectedItem).V textBox2.Text = } private void Form1_Load(object sender, EventArgs e) { ComboBoxItem i1 = new ComboBoxItem(); i1.Text = &this ...
小锋神 阅读(9131) |
摘要: 例如:string c = @&net start ServiceDemo&; Cmd(c);string c = @&c:\windows\microsoft.net\framework\v2.0.50727\InstallUtil.exe & + AppDomain.CurrentDomain.BaseDirectory + &ServiceDemo.exe&; Cmd(c); /// &summary& /// 执行Cmd命令 /// &/summary& public void Cmd(string c
小锋神 阅读(5845) |
摘要: this.lvwInfoList.EnsureVisible(this.lvwInfoList.Items.Count - 1);//自动滚动到指定行
小锋神 阅读(2894) |
摘要: WinForm 和 Windows Service 通信 - 消息队列如题,WinForm 和 Windows Service 通信,就是应用程序和系统服务通信,可以看成是进程间的通信。通信的方式有很多,这里只介绍通过消息队列(MessageQueue)方式。理论知识就不介绍了,直接介绍实例吧。工程下载/Files/newspring/WindowsService.rar一、建立工程建立3个项目,其中,Common 为类库,包含错误日志类(Log.cs)和数据库访问类(MsSql.cs)ServiceDemo 为Windows Service服务,包含安装类(Installer1.cs)和服务
小锋神 阅读(348) |
摘要: 0 一.应用场景 客户服务器上装的软件越来越多,由原来一个人管理改为几个人同时管理了,因此不同的管理员需要经常进行远程登陆,注销操作。 服务器上原有的一些程序是windows程序,用户登陆注销后,程序就退出了,咋办?把GUI程序改成windows服务程序是可行的,但客户希望能尽快解决此问题啊,咋办?于是就有了本文的想法,先这样用用吧! 呵呵...二.本文难点 说起来就一句话,做起来可得考虑以下三个问题: 1.如程序要访问Oracle数据库,在启动你的程序前,得先将Oracle数据库服务启动。 2.让Windows服务程序支持启动你的有界面的应用程序。(默认是不能与桌面交互的) 3.如何让W..
小锋神 阅读(1493) |
摘要: 如题,WinForm 和 Windows Service 通信,就是应用程序和系统服务通信,可以看成是进程间的通信。通信的方式有很多,这里只介绍通过消息队列(MessageQueue)方式。理论知识就不介绍了,直接介绍实例吧。工程下载/Files/newspring/WindowsService.rar一、建立工程建立3个项目,其中,Common 为类库,包含错误日志类(Log.cs)和数据库访问类(MsSql.cs)ServiceDemo 为Windows Service服务,包含安装类(Installer1.cs)和服务类(Service1.cs)ServiceDesk 为WinForm应
小锋神 阅读(5079) |
摘要: //复制: private void button1_Click(object sender, System.EventArgs e) { if(textBox1.SelectedText != &&) Clipboard.SetDataObject(textBox1.SelectedText); } //粘贴: private void button2_Click(object sender, System.EventArgs e) { IDataObject iData = Clipboard.GetDataObject(); if(iData.GetDataPres.
小锋神 阅读(16970) |
摘要: DevExpress XtraGrid的功能实在强大,刚使用的时候看到一大片属性设置,分不清东南西北,参照demo和使用中的一些经验,记录一下使用方法。现在数据库访问都使用ORM技术了,对于DataSouce绑定以下是以IList为说明对象。控件基本定义 DevExpress.XtraGrid.GridControl gridControl1; 1、 数据绑定(IList) DevExpress.XtraGrid.Views.Grid.GridView gridView1;IList&MyClass& list = new BindingList&MyClass&();
小锋神 阅读(3002) |
摘要: 1.在单元里显示日历控件、下拉框等Imports DevExpress.XtraEditors.RepositoryDim irdata As New RepositoryItemCalcEditGridView1.Columns(1).ColumnEdit = irdata2.格式化数字 ###,###.00 GridView1.Columns(4).DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric '此行必须要,不然下面的没有作用 GridView1.Columns(4).Displa...
小锋神 阅读(742) |
摘要: private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { DataGridView dgv = (DataGridView) if (e.RowIndex & dgv.Rows.Count - 1)//这个判断,如果DataGridView没有设置为添加.就可以不要了 { if (e.ColumnIndex == 4...
小锋神 阅读(2692) |
摘要: DevExpress.XtraEditors.Controls 此控件包中包含的控件最多,包括文本框,下拉列表,按钮,等等 DevExpress.XtraGrid 网格 DevExpress.XtraBars 菜单栏 和 工具栏 DevExpress.XtraNavBar 导航条 DevExpress.XtraPrinting 报表打印相关 DevExpress.XtraReports 报表 DevExpress.XtraTreeList 树 DevExpress.XtraVerticalGrid 使用方法: ...
小锋神 阅读(2091) |
摘要: 大多是网上零散找到的,小部分是自己使用的时候自己遇到的。XtraGrid的关键类就是:GridControl和GridView。GridControl本身不显示数据,数据都是显示在GridView/CardView/XXXXView中。GridControl是各种View的容器。所以要控制显示,要从GridView这些类入手。1.DevExpress控件组中的GridControl控件不能使横向滚动条有效。现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容。解决:gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽
小锋神 阅读(2395) |
摘要: 如上图,先选中GridView,不是GridControl,在属性窗口中,选择事件窗口,注册事件MouseUp 代码如下,其中popupMenu_ResumeGrid为DevExpress.XtraBars.PopupMenugridView_ResumeCollection为private DevExpress.XtraGrid.Views.Grid.GridView----------------------------------------------------------------private void gridView_ResumeCollection_MouseUp(obj
小锋神 阅读(4557) |
摘要: public Form2() { InitializeComponent(); //不显示内置的导航条。 gc1.UseEmbeddedNavigator = //不显示分组的面板 gv1.OptionsView.ShowGroupPanel = gv2.OptionsView.ShowGroupPanel = //自动改变行高适应内容 gv1.OptionsVie...
小锋神 阅读(391) |
摘要: //新建一个类,内容为:using Susing DevExpress.XtraEditors.Cusing DevExpress.XtraGrid.Lnamespace UI{ public class ChineseLocalizer : Localizer { public override string Language { get { return &Chinese&; } } // overriding the GetLocalizedString method ...
小锋神 阅读(232) |
摘要: 汉化DevExpress的Code今天Copy到 汉化DevExpress的Code 大家分享下using Susing System.Collections.Gusing System.Tusing DevExpress.XtraGrid.Lusing DevExpress.XtraBars.Lusing DevExpress.XtraCharts.Lusing DevExpress.XtraEditors.Cusing DevExpress.XtraLayout.Lo.
小锋神 阅读(2245) |
摘要: 1.获取窗体的最大化、最小化事件:(其实windows操作系统的事件处理靠的就是消息,所以我们可以从windows的消息队列中找到窗体最大化、最小化、关闭的消息,应用程序就是靠这些消息来工作的)做用应用程序时想自己控制窗体的最大化最小化并作出相关处理时候,可以重写窗体的WndProc方法,实现自己想要的最大化、最小化效果。如果使用窗体的Resize(调整大小时候发生)事件也可以监控窗体的状态,但有时候不能实现想要的效果。比如动态的改变窗体最大化大小的时候。private int WM_SYSCOMMAND = 0x112; private long SC_MAXIMIZE = 0xF030;.
小锋神 阅读(4509) |
摘要: private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; //首先必须了解Windows的消息传递机制,当有鼠标活动消息时, //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION , //同样地,若接受到的消息是 HTCLIENT,说明用...
小锋神 阅读(2152) |
摘要: 1,关联按钮上的Key事件 在按钮上的keypress,keydown,keyup事件必须要获得焦点,键盘上的键才能有效。 private void btnEnter_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter)//如果输入的是回车键 { this.btnEnter_Click(sender, e);//触发button事件 } } 只有...
小锋神 阅读(16740) |
摘要: 为软件换肤,是一个永恒的主题。在devexpress中,更换窗体皮肤就很简单,不需要我们自己去制造皮肤,官方就有很丰富的皮肤包,在tannaiyin的基础上这么来弄 要简单得多。那么到底如何让我们的DevExpress控件的窗体皮肤靓丽更与众不同呢?本文将为你一一揭晓。 第一步让所有窗体都从DevExpress.XtraEditors.XtraForm继承。 第二步:添加两个引用: DevExpress.BonusSkins.v9.2 DevExpress.OfficeSkins.v9.2 第三步:在软件的入口Program类的main函数的第一行代码前加上: DevExpr...
小锋神 阅读(3253) |
摘要: 为了在大数据量中减少客户端在使用表格时对服务器及网络等资源的占用,我们需要在XtraGrid表格中实现分页操作的功能。根据这个功能需求,结合XtraGrid的基本功能,提出了以下2种实现分页操作的方案,并对每一个方案的利弊进行分析,比较之后希望能找到最适合你自己的方案。 1、利用XtraGrid本身的Server Mode模式 XtraGrid为了满足对大数据量访问时的性能要求,提供了一种叫做Server Mode的工作模式,在这种模式中,XtraGrid将不会一次性从数据源中读取所有数据到内存中,而是根据需要从数据源中读取少量数据并显示到屏幕上。但XtraGrid在这种模式下工作时有一...
小锋神 阅读(6594) |
摘要: void pictureBox1_Paint(object sender, PaintEventArgs e) { foreach (Control C in this.Controls) { if (C is Label) { Label L = (Label)C; L.Visible = e.Graphics.DrawString(...
小锋神 阅读(151) |
摘要: 使用lblPstart.BackColor=Color.T可以让lable控件的背景色透明,可以看到摆放lable容器的背景色,但这个背景色不一定是窗体的背景色。 比如: From1.Controls.Add(lable1); lable1.BackColor=Color.T 这样,lable1就是透明的 但是如果是: From1.Contorls.Add(pictureBox1);//或者是其它容器控件 pictureBox1.Controls.Add(lable1); lable1....
小锋神 阅读(4916) |
摘要: DevExpress .net组件包中,有一个组件是xtraTabbedMdiManager,可以将MDI窗口显示为TabControl的样式,可以说非常实用。可惜的是,关闭标签页(即子MdiChild)不能通过双击来实现,这对于用惯了傲游等软件的朋友来说,有点不习惯。查看xtraTabbedMdiManager的事件,只有MouseDown,MouseUp等,并没有DoubleClick,好不爽。 其实,转换一下思路,我们可以将连续的两次MouseDown事件模拟成一个双击事件,就可以解决上面的问题了,真是一点就破,技术上没有什么难度,且看代码吧://通过MouseDown事件模拟...
小锋神 阅读(2901) |
摘要: 今天用到了gridcontrol这个控件,要求写一个gridview的双击事件,因为想要的效果是只双击行才出Message,用gridview的Double_Click我没实现,后来想到MouseDown,一试,很简单,首先,仍旧需要将gridview1.OptionsBehavior.Editable设为false,下面是代码: Skelta BPM.NET(全球第一.NET工作流引擎) Visual WebGui (完美的用户界面解决方案) List & Label(图表报表生成控件) DXperience Uni Premium 白金版(慧都独家) //...
小锋神 阅读(8099) |
摘要: C#中MessageBox用法大全(附效果图)我们在程序中经常会用到MessageBox。 MessageBox.Show()共有21中重载方法。现将其常见用法总结如下: 1.MessageBox.Show(&Hello~~~~&);最简单的,只显示提示信息。 2.MessageBox.Show(&There are something wrong!&,&ERROR&);可以给消息框加上标题。3.if (MessageBox.Show(&Delete this user?&, &Confirm Messa
小锋神 阅读(32463) |
摘要: DateEdit如果开启Vista模式并显示日期+时间模式 问题,以前没有涉及过,借机看一下,记录如下:设置为Vista显示模式(如下图)设置以下属性dateEdit1.Properties.VistaDisplayMode = DevExpress.Utils.DefaultBoolean.TdateEdit1.Properties.VistaEditTime = DevExpress.Utils.DefaultBoolean.T设置显示长日期模式(日期+时间):dateEdit1.Properties.DisplayFormat.FormatString=&g&q
小锋神 阅读(1948) |
摘要: 使用到的对象:1、 DataGridView: dataGridView12、 BindingNavigator: bindingNavigator1(自带添加按钮btnAdd、删除按钮btnDelete)3、 ToolStripButton: btnCancelEdit(添加到bindingNavigator1之中)使用到的事件:/// &summary& /// 单元格的值改编后,执行更新、或插入操作; /// &/summary& /// &param name=&sender&&&/param& /// &par
小锋神 阅读(4392) |
摘要: DataGridView控件在Winform程序中使用相当的普遍,如何能让其输入即保存,而不用另增加一个“保存”按钮呢?经研究,终于找到解决办法:在DataGridView的RowValidated事件中增加代码以下代码 //获取该行绑定数据 DataRowView row = (DataRowView)gvProduct.Rows[e.RowIndex].DataBoundI //若数据未改动,则返回 if (row.Row.RowState == DataRowState.Unchanged) //执行SQL更新数据 string sql = &updat
小锋神 阅读(1485) |
摘要: Devpress.XtraGrid.GridControl.GridView 属性 说明Options OptionsBehavior 视图的行为选项 AllowIncrementalSearch 允许用户通过输入想得到的列值来定位行 AllowPartialRedrawOnScrolling 允许视图在垂直滚动中局部刷新 AutoExpandAllGroups 自动展开视图中的所有组 AutoPopulateColumns 当视图中没有某些数据源中的字段时,在视图中自动创建这些列 AutoSelectAllInEditor 在一个单元格编辑中,是否允许通过Enter...
小锋神 阅读(1669) |
摘要: 方案一: 窗体属于类,可以在窗体类中定义已全局变量,类型为公开、静态的。示例: public static string str =&&; 注意是静态变量,如果为: public string str = &&; 可能会出现问题,非静态变量只能实例化对象后,才可以访问,如果该值为动态赋值的话,当别的窗口调用的时候,该值 str,一直是为&&;所以说最好能设置为静态成员变量,用类来访问它。方案二:在窗体类中定义构造函数,意思就是说,如果form1要用到form2的一个变量,则要在form1中定义一个构造函数:public Form1(s
小锋神 阅读(910) |
摘要: 你需要设置HideSelection 为 false 并且用 AppendText来插入新数据。
小锋神 阅读(311) |
摘要: DEV控件:gridControl常用属性设置 1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel= 2.得到当前选定记录某字段的值 sValue=Table.Rows[gridView1.FocusedRowHandle][FieldName].ToString();3.数据只读 gridView1.OptionsBehavior.Editable=4.不显示MasterDetailView gridView1.OptionsDetail.EnableMasterViewMode=5.修改最上面的
小锋神 阅读(5557) |
摘要: 关于GridControl的几点介绍1. 它的功能类似与 Visual Studio .NET 2003自带的 DataGrid ,用于数据的客户端展示。开发者可以领用程序控制进行分页现实,分页方法在此不予介绍了。2. 它与DataGrid的不同就在于其功能的非常强大,可以直接设计报表并可导出为Excel,Txt,Hmtl 格式。免去了再用其他控件设计报表的烦杂。常用的几个对象private DevExpress.XtraGrid.GridControl gridControl1;//整个数据容器private DevExpress.XtraGrid.Views.BandedGrid.Band
小锋神 阅读(719) |
摘要: 以下代码已经有好多人写过,还望各位多多指教我只不过是整理了一下在我使用过程中的比较熟悉的,在以后的使用过程中会继续添加1.gridView 奇行与偶行交替变色this.gridView1.OptionsView.EnableAppearanceEvenRow =this.gridView1.OptionsView.EnableAppearanceOddRow =this.gridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int
小锋神 阅读(4278) |
摘要: 1:默认情况下,gridView1.OptionsView.ColumnAutoWidth属性是true,即各列的宽度自动调整,你把它设成false,就会出现了。2:DeveloperExpress控件组合中的GridControl控件,如何自动显示每一行的序号?比方说有10条数据记录,我要在记录旁边显示1.2.3.4.这样的数字.但是,如果更改了数据记录的显示方式,升序或者降序都不影响数字的变化.在GridView的CustomDrawRowIndicator事件中添加如下代码:privatevoidgridView1_CustomDrawRowIndicator(objectsender
小锋神 阅读(1961) |
摘要: DevExpress控件之GridControl控件(代码篇)1. 设置数据源:string sql = &select fid,fname from dual&; DataTable dt = DALUse.Query(sql).Tables[0];gridControl1.DataSource =*:Daluse是项目数据库连接基类,不用特别理会2.绑定字段:这部分工作主要是在Designer中进行的,dev的Designer设计器提供了非常方便的设置方式.我么可以省去敲代码,直接在设计器中就可以完成了.在左边选Columns,添加完列以后,在列的FieleNa
小锋神 阅读(737) |
摘要: 说明Options OptionsBehavior 视图的行为选项 AllowIncrementalSearch 允许用户通过输入想得到的列值来定位行 AllowPartialRedrawOnScrolling 允许视图在垂直滚动中局部刷新 AutoExpandAllGroups 自动展开视图中的所有组 AutoPopulateColumns 当视图中没有某些数据源中的字段时,在视图中自动创建这些列 AutoSelectAllInEditor 在一个单元格编辑中,是否允许通过Enter或F2来选择该单元格的所有内容 AutoUpdateTotalSummary 当列值发生改变时,自动更新汇总.
小锋神 阅读(1894) |
摘要: 我查了一下,ydsunny(小强) ( )是web的解决方法,在winform里,DataGridView没有RowDataBound事件,如果在winform里,如下修改: private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e) { if (e.RowIndex & = dataGridView1.Rows.Count - 1) DataGridViewRow dgr = dataGridView1.Rows[e.RowIndex]; try {
小锋神 阅读(2107) |
摘要: 很多朋友都会在开发WinForm中遇到Label要显示的内容太长,但却不能换行的问题.这里我总结了几种方法,供大家参考。第一种是把Label的AutoSize属性设为False,手动修改Label的大小.这样的好处是会因内容的长度而自动换行,但是当内容的长度超过所设定的大小时,多出的内容就会无法显示.因此,这种方法适合于基本确定内容长度的时候使用。第二种是把Label的Dock设为FILL,同时将AutoSize属性设为False,这种方法可将上面所说的缺点修正,但是同时Label会将其它控件的位置霸占,影响布局.因此,在使用该方法时,最好给Label加上个Panel或GroupBox控件。第
小锋神 阅读(250) |
摘要: 线程间操作无效: 从不是创建控件“”的线程访问它。听说2003里边不会,我不知道是不是这样的,反正一直都在用05~05里会出这个问题的,貌似是为了安全~哦,现在知道的解决方法有两个~第一:Control.CheckForIllegalCrossThreadCalls =线程开始的时候加这么一句,OK,看不到错误了~啥都能用了~第二:用委托,在05里,每个控件都有个InvokeRequired的属性~判断一下是不是true,是的话进行Invoke操作的,完事了~//建立个委托private delegate string returnStrDelegate();//搞个最简单滴取值
小锋神 阅读(154) |
摘要: DataGridView中CellClick的使用,选中一行触发的动作可以在这个方法里执行private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e) { pnlBottom.Enabled = //获得当前选中的行 int rowindex = e.RowI string value0=&&; string value1 = &&; string value2 = &&; try { //获得当前行的第一列的值
小锋神 阅读(20036) |
摘要: /**//// &summary& /// 填充comboboxB超医师
涂聚文 /// /// &/summary& private void setDBPyhNameComboBox() { this.combPhy.DataSource = DBConnectioin dbc = new DBConnectioin(); SqlConnection conn = new SqlConnection(DBConnectioin.conStr); conn.Open(); //DbHelperSQL.s
小锋神 阅读(4873) |
摘要: 在解决方案中增加一窗口选择xml文件,并将名称改为app.config.其内容设置如下: &?xml version=&1.0& encoding=&utf-8&?& &configuration& &appSettings& &add key=&source& value=&Server=uid=pwd='fang';database=& /& &/appSettings& &/configura
小锋神 阅读(3537) |
摘要: DataGridView控件DataGridView是用于Windows Froms 2.0的新网格控件。它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特性。 关于本文档:本文档不准备面面俱到地介绍DataGridView,而是着眼于深入地介绍一些技术点的高级特性。本文档按逻辑分为5个章节,首先是结构和特性的概览,其次是内置的列/单元格类型的介绍,再次是数据操作相关的内容,然后是主要特性的综述,最后是最佳实践。大部分章节含有一个“Q & A”部分,来回答该章节相关的一些常见问题。注意,某些问题会由于知识点的关联性重复出现在多个章节。这些问题、
小锋神 阅读(160809) |
摘要: Code单元格格式化数据Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e){ if (e.ColumnIndex == 1 /*status列的Index*/) { if (object.Equals(e.Value, 0)) { e.Value = &qu
小锋神 阅读(826) |
摘要: 注:本程序是在VS2005基础上写的。1。如果不想让程序在任务栏中显示,请把窗体的属性ShowInTaskbar设置为2。如果想让程序启动时就最小化,请设置窗体的属性WindowState设置为Minimized。(Minimized 最小化,Normal正常启动,Maximized最大化)3。拉一个NotifyIcon控件notifyIcon,为控件notifyIcon的属性Icon添加一个icon图标。4。可以为NotifyIcon加一个ContextMenuStrip右键菜单menu_Notify。5。本例子禁用了窗体最大化按钮。(设置窗体的属性MaximizeBox的属性为
小锋神 阅读(461) |
摘要: 关键字: c# winform 子窗体 刷新 父窗体 子 窗体 父 控件 值 第一种方法:用委托,Form2和Form3是同一组Form2C#代码 usingSusingSystem.Collections.GusingSystem.ComponentMusingSystem.DusingSystem.DusingSystem.TusingSystem.Windows.FnamespaceTestMouseMove{publicdelegatevoidSetVisiableHandler();publicpartial
小锋神 阅读(3910) |
摘要: 在login页面中,我是这样定义的: public qqyhm = this.txtyhm. 在另一个页面,是这样的: this.txtyhm1.Text = Login. 但是在这里Login.qqyhm 是空值
小锋神 阅读(146) |}

我要回帖

更多关于 winform窗体之间控件调用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信