07 Jun 2004

C-omega语言什么东东?

谁研究过?
和DotNet什么关系?
好像是C#的扩展
http://research.microsoft.com/Comega/

03 Jun 2004

C# VB XML 源代码转Html高亮显示工具

C# VB XML 源代码转Html高亮显示工具

http://www.squishyweb.com/ware/products.asp?q=squishysyntax
很不错的东西
演示:
http://www.squishyweb.com/ware/files/SampleCs-Output.html
http://www.squishyweb.com/ware/files/SampleVb-Output.html
http://www.squishyweb.com/ware/files/SampleXML-Output.html
我试了试,真不错!

01 Jun 2004

一个很全的教程站

很少见教程大全,不知道我是不是很落伍,今天才逛到这里

HTML Tutorials
Learn HTML
Learn XHTML
Learn CSS
Learn TCP/IP

XML Tutorials
Learn XML
Learn XSL
Learn XSLT
Learn XSL-FO
Learn XPath
Learn XQuery
Learn DTD
Learn Schema
Learn DOM
Learn XForms
Learn SOAP
Learn WSDL
Learn RDF
Learn WAP

Browser Scripting
Learn JavaScript
Learn DHTML
Learn VBScript
Learn WMLScript

Server Scripting
Learn SQL
Learn ASP
Learn ADO
Learn PHP

.NET (dotnet)
.NET Microsoft
.NET ASP
.NET Mobile

Multimedia
Learn Media
Learn SMIL
Learn SVG
Learn Flash

Web Building
Web Building
Web W3C
Web Browsers
Web Quality
Web Graphics
Web Careers
Web Hosting
Web Certification

29 May 2004

也有人和我一样抱怨为何C#中操作office产品的方法有那么多的参数

原来做过一个小的win程序操作Excel的 被那些个参数搞的头晕晕的
那么多Missing啊
今天在Blog.Msdn.com看到关于VB和C#在office开发中的比较的讨论


http://blogs.msdn.com/cyrusn/archive/2004/05/28/144148.aspx


嘿嘿,也有人和我一样抱怨为何C#中操作office产品的方法有那么多的参数,其中Word.Documents.Open多达30个参数...


http://blogs.msdn.com/cyrusn/archive/2004/05/28/144165.aspx

继续关注这2篇blog中......

18 May 2004

为小巨人记一笔,等待明日新星的升起

你知道9岁零6个月时的姚明有多高?告诉你,1米79,吓人吧。而长沙有个比姚明更吓人的小巨人,9岁零6个月的刘武帅,身高1米82,比当年的姚明还高3厘米。现在姚明的身高2米26,而经过科学预测,成年后的刘武帅身高也很可能会超过姚明。

  刘武帅,今年3月刚满10岁,在湖南省青少年篮球俱乐部接受正规篮球训练不到一年,如今身高已达到1米86。刘武帅的父亲身高1米93,母亲身高1米73,严格的医学检查表明 ,刘武帅身体发育一切正常,出众的身高完全得益于遗传。“他现在穿49码的鞋,身高平均每年要长7厘米。我们现在最发愁的是给他买不到合适的鞋。”刘武帅的妈妈伍女士说。

  5月10日下午,记者在育英小学篮球馆看到了这位高大的“篮球小子”:结实的身材,留着和姚明一样的寸头,有着和姚明一样的深眼眶和大眼睛。

  省青少年篮球俱乐部总教练毛地对刘武帅关爱有加,一心想把他培养成和姚明一样的优秀中锋,不过由于精力有限,毛指导非常希望刘武帅能早日接受更专业化的篮球训练。毛指导告诉记者,广东、北京、上海等多家篮球职业俱乐部闻讯湖南有这样出众的小巨人后,将先后于近期来长“选秀”。

  “他刚来的时候,我看到他不仅有身高,而且协调性、灵活性各方面都很出色,我感觉这是个难得的好苗子。”毛指导说。

  刘武帅现在的表现,也证实了毛指导的眼光,也让他的父母坚定了把孩子培养成材的决心。“武帅也挺喜欢篮球的,一开始我们想让他念书,将来走CUBA的道路,但后来我们又觉得,这么好的条件,不练篮球,真的可惜了。现在我们只让他在学校上语文、数学和英语课,其他课程家里可以给他辅导,而课余的时间都让他参加训练,他进步也挺快的。”谈到心爱的儿子,伍女士的欣喜之情溢于言表。

  训练结束后,毛指导带着刘武帅配合记者拍照。小武帅有些腼腆,毛指导在一旁鼓励道:“就像姚明那样,对,就这样,眼睛再看得高一点……”

  (稿源:三湘都市报)
在我的博客上为小巨人记一笔,等待明日新星的升起

11 May 2004

TechNet月度光盘资料+贺卡+msn贴纸+TechNet体恤 被哄抢而光

前阵子换了工作,没有及时的更新TechNet的资料4月份的光盘资料被寄到原来单位去了
连同一张贺卡,msn贴纸,TechNet的体恤 昨天同事带给了我。
好消息和MM共享之... ...

随之贺卡和msn贴纸全部被没收(单人哄抢),XL号的体恤我竟然穿上象紧身装(PS:俺190多斤重的),也被剥夺,MM曰:这体恤我晚上穿出去乘凉,宽宽松松的,刚好。

55555......

一堆东西只剩下张光盘是我的了。
MM的话“微软是关心你们这些开发人员,不想让你们打光棍,这些卡啊贴纸啊的就是让你送女朋友的!”
惊人之语啊~~
当然MM也不忘抚慰一下我,把贴纸里那只美丽的MSN蝴蝶贴在我的手机上,剩下的MSN小人一个也不许我要了

07 May 2004

一个好地方~SharpLibrary

30 Apr 2004

一个关于DataGrid的打印类,分享,感谢作者

手中的活计需要打印,就到处找找。
google中扑获,挺不错的,大家共享~
how can i print the data in DataGrid?

http://forums.aspfree.com/archive/t-17107
http://forums.aspfree.com/t17107/s.html

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Printing;
using System.Data;

using System.Windows.Forms;

namespace Hooooo.Print { public class DataGridPrinter { private DataGrid dataGrid; private PrintDocument printDocument; private PageSetupDialog pageSetupDialog; private PrintPreviewDialog printPreviewDialog;

public DataGridPrinter(DataGrid dataGrid) { this.dataGrid = dataGrid; printDocument = new PrintDocument(); printDocument.PrintPage += new PrintPageEventHandler(this.printDocument_PrintPage); }

private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int rowCount = 0; int colCount = 0; int x = 0; int y = 0; int rowGap = 20; int colGap = 5; int leftMargin = 50; Font font = new Font(“Arial”, 10); Font headingFont = new Font(“Arial”, 11, FontStyle.Underline); Font captionFont = new Font(“Arial”, 10, FontStyle.Bold); Brush brush = new SolidBrush(Color.Black); string cellValue = “”;

if(dataGrid.DataSource.GetType().ToString() == “System.Data.DataTable”) { rowCount = ((DataTable)dataGrid.DataSource).Rows.Count; } else if(dataGrid.DataSource.GetType().ToString() == “System.Collections.ArrayList”) { rowCount = ((ArrayList)dataGrid.DataSource).Count; } colCount = dataGrid.TableStyles[0].GridColumnStyles.Count;

//print caption if(dataGrid.CaptionVisible) { y += rowGap; x = leftMargin; e.Graphics.DrawString(dataGrid.CaptionText, captionFont, brush, x, y); }

//print headings y += rowGap; x = leftMargin; for(int j = 0; j < colCount; j++) { if(dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0) { cellValue = dataGrid.TableStyles[0].GridColumnStyles[j].HeaderText; e.Graphics.DrawString(cellValue, headingFont, brush, x, y); x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap; } }

//print all rows for(int i = 0; i < rowCount; i++) { y += rowGap; x = leftMargin; for(int j = 0; j < colCount; j++) { if(dataGrid.TableStyles[0].GridColumnStyles[j].Width > 0) { cellValue = dataGrid[i,j].ToString(); e.Graphics.DrawString(cellValue, font, brush, x, y); x += dataGrid.TableStyles[0].GridColumnStyles[j].Width + colGap; y = y + rowGap * (cellValue.Split(new char[] {’\r’, ‘\n’}).Length - 1); } } } string s = cellValue; string f3 = cellValue; }

public PrintDocument GetPrintDocument() { return printDocument; }

public void Print() { try { pageSetupDialog = new PageSetupDialog(); pageSetupDialog.Document = printDocument; pageSetupDialog.ShowDialog(); printPreviewDialog = new PrintPreviewDialog(); printPreviewDialog.Document = printDocument; printPreviewDialog.Height = 600; printPreviewDialog.Width = 800; printPreviewDialog.ShowDialog(); } catch(Exception e) { throw new Exception(“Printer error.” + e.Message); }

} } }


需要打印表格线条及分页的朋友,可以看一下下面这篇文章:
 

30 Apr 2004

可以弹出确认对话框的自定义Web服务器控件ConfirmButton

经常在论坛里看到类似这样的问题:“如何在点击删除按钮的时候弹出个确认删除对话框”。

下面我们来自己写一个这样的自定义Web服务器控件!

思路如下:

继承System.Web.UI.WebControls.Button控件

增加一个属性“ConfirmMessage”来表示弹出确认框上面的提示信息。

在服务器控件呈现在页面之前把一段javascript写到页面

内容如下:

<script language="JavaScript">

<!--

function _doAspxBoyConfirm()

{

return confirm("你确认删除/保存吗??")

}

//-->

</script>

查一下msdn中对于Control.OnPreRender 方法的描述

可以得到“此方法通知服务器控件在保存视图状态和呈现内容之前,执行任何必要的预呈现步骤”.

所以我们只要在OnPreRender方法内 Page.RegisterClientScriptBlock把这段javascript发送到客户端,并且给Button. Attributes属性内添加一个“onclick”的客户端属性对应值为: "return _doAspxBoyConfirm()”.

详细情况可以查阅

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpref/html/frlrfsystemwebuiwebcontrolswebcontrolclassattributestopic.htm

这样一个具有ConFirm功能的Button就基本上建立起来了。

新建一个测试该控件的工程

在工具箱上点右键选择“添加/移除项”,点击浏览选择编译好的dll文件,点击确定,你会发现ConFirmButton已经添加到工具箱内了

将其托到一个Aspx页面内 在属性设置内给ConfirmMessage值为你要的弹出框内容比如“确定删除吗?”,按F5运行。

当点该按钮时会弹出一个confirm对话框询问“确定删除吗?,如果点击确定则执行buttonButton_Click事件,如果点击取消则不执行。

你可以查看他生成的html代码,以加深对该控件工作原理的理解

完整的代码如下:

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Text;

 

namespace AspxBoy.Com.ConfirmButton

{

       /// <summary>

       /// Button点击时会弹出一个对话框要求确认

       /// </summary>

       public class ConfirmButton : System.Web.UI.WebControls.Button

       {

              private string _confirmMessage;

              /// <summary>

              /// 当客户端点击此Button时弹出的提示消息筐的内容

              /// </summary>

              public string ConfirmMessage

              {

                     get

                     {

                            return _confirmMessage;

                     }

 

                     set

                     {

                            _confirmMessage = value;

                     }

              }

 

              protected override void OnPreRender(System.EventArgs e)

              {

                     StringBuilder sb = new StringBuilder();

                     sb.Append("<script language=\"JavaScript\">");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("<!--");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("/*--------------------------------------------");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("ControlName:\t\tAspxBoy.Com.ConfirmButton");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("AuthorName:\t\t\tHuobazi,WuMeibo");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("CopyRight:\t\t\twww.github.Com");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("---------------------------------------------*/");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("function _doAspxBoyConfirm()");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("{");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("return confirm(\"");

                     sb.Append(ConfirmMessage);

                     sb.Append("\")");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("}");

                     sb.Append(System.Environment.NewLine);

                     sb.Append("//-->");

                     sb.Append("</script>");

                     Page.RegisterClientScriptBlock("_doAspxBoyConfirm",sb.ToString());

                     this.Attributes.Add("onclick","return _doAspxBoyConfirm()");

                     base.OnPreRender(e);

              }

              public override void RenderBeginTag(HtmlTextWriter writer)

              {

                     writer.WriteLine();

                     writer.Write("<!-------------------");

                     writer.Write("AspxBoy.Com.ConfirmButton Start");

                     writer.Write("\tAuthorName: \tHuobazi");

                     writer.WriteLine(" --------------------->");

                     writer.Write("<!-------------------- ");

                     writer.Write("Copyright:2004 Huobazi(www.github.com)");

                     writer.Write(" ---------------------");

                     writer.WriteLine(">");

                     base.RenderBeginTag(writer);

              }

              public override void RenderEndTag(HtmlTextWriter writer)

              {

                     base.RenderEndTag(writer);

                     writer.WriteLine();

                     writer.Write("<!------------------------------- ");

                     writer.Write("AspxBoy.Com.ConfirmButton  End");

                     writer.Write(" --------------------------------");

                     writer.WriteLine(">");

                     writer.WriteLine();

              }

       }

}


27 Apr 2004

打开一个Excel模板文件填充数据另存为一个文件

最近做的东西要求打开一个Excel文件模板后填充数据
开始用OleDb连接该Excel文件更新老是出错误 “需要一个可更新的.....“
http://expert.csdn.net/Expert/topic/2992/2992809.xml?temp=.4825403
如果是access这个错误多半是权限引起的 可是我做的是winform 权限是admin啊
未果
后来用ODBC测试了几个字段 都成功了
开始写程序 后发现就有那么2个单元格不听话 提示参数错误
郁闷
http://expert.csdn.net/Expert/topic/3000/3000113.xml?temp=.3331262
仍未果
没办法翻google
获得
http://www.c-sharpcorner.com/winforms/ExcelReadMG.asp
用com组件,可行哦,今早上csdn就有网友pm我问是如何搞定的
那就写到这里,
以下是部分代码,使用前要先按上文中的说明添加Com引用
...........
string strFileName = Environment.CurrentDirectory+@"\template\template.tpl";
    string strSaveFileName =
Environment.CurrentDirectory+@"\excel\"+System.DateTime.Now.ToString().Replace(":","").Replace("-","").Replace(" ","")+@".xls";
    Excel.Application ThisApplication = new Excel.ApplicationClass();
    Excel.Workbook ThisWorkBook;
    object missing = System.Reflection.Missing.Value;
    try
    { 
     //加载Excel模板文件
     ThisWorkBook = ThisApplication.Workbooks.Open(strFileName,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
     Excel.Worksheet ThisSheet = (Excel.Worksheet)ThisWorkBook.Sheets[1];
     ThisSheet.Cells[7,1] = dtEnd.ToShortDateString();
     progressBar.Value = 30;
     ThisApplication.Visible = false;
     DataRow dr = dt.Rows[0];
     for( int i=0; i     {
      ThisSheet.Cells[7,i+2] = dr[i].ToString();
      progressBar.Value +=1;
     }
     //更新数据后另存为新文件
     ThisSheet.SaveAs(strSaveFileName,missing,missing,missing,missing,missing,missing,missing,missing);
    }
    catch{}
    finally
    {
     ThisApplication.Quit();
     ThisWorkBook = null;
     ThisApplication = null;
     //dt = null;
    }
    try
    { //打开刚才生成的Excel文件
     Excel.Workbook NewWorkBook;
     NewWorkBook = NewApplication.Workbooks.Open(strSaveFileName,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
     Excel.Worksheet NewSheet = (Excel.Worksheet)NewWorkBook.Sheets[1];
     NewApplication.Visible = true;

//也可以使用System.Diagnostics.Process.Start(strSaveFileName);来打开新文件

    }

打开Excel后进程内会多出一个excel进程
需要手工清理
参考这片文章

http://www.eggheadcafe.com/articles/20021012.asp

http://www.github.com/476/archive.aspx