private void Tree_AfterExpand(object sender, TreeViewEventArgs e)
{
int FileID = int.Parse(((ListItem)comboxFile.Items[comboxFile.SelectedIndex]).ID);
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
object[] oArgs = new object[] { e.Node, FileID };
bw.RunWorkerAsync(oArgs);
bomTree.SelectedNode = e.Node;
}
{
int FileID = int.Parse(((ListItem)comboxFile.Items[comboxFile.SelectedIndex]).ID);
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
object[] oArgs = new object[] { e.Node, FileID };
bw.RunWorkerAsync(oArgs);
bomTree.SelectedNode = e.Node;
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
object[] oArgs = e.Argument as object[];
TreeNode tn = oArgs[0] as TreeNode;
int FileID = int.Parse(oArgs[1].ToString());
DataAccess da = new DataAccess();
DataTable dtChildren = null;
DataTable dgvlist = null;
if (tn.Tag != null)
{
dtChildren = new DataTable();
dtChildren = GetData();
dgvlist = new DataTable();
dgvlist =GetData();
}
else
{
dtChildren = new DataTable();
dtChildren =da.SearchChildren(FileID, tn.Text + "%");
}
e.Result = new object[] { tn, dtChildren, dgvlist };
}
object[] oArgs = e.Argument as object[];
TreeNode tn = oArgs[0] as TreeNode;
int FileID = int.Parse(oArgs[1].ToString());
DataAccess da = new DataAccess();
DataTable dtChildren = null;
DataTable dgvlist = null;
if (tn.Tag != null)
{
dtChildren = new DataTable();
dtChildren = GetData();
dgvlist = new DataTable();
dgvlist =GetData();
}
else
{
dtChildren = new DataTable();
dtChildren =da.SearchChildren(FileID, tn.Text + "%");
}
e.Result = new object[] { tn, dtChildren, dgvlist };
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
object[] oResult = e.Result as object[];
TreeNode tNodeParent = oResult[0] as TreeNode;
DataTable dtChildren = oResult[1] as DataTable;
DataTable dgvlist = oResult[2] as DataTable;
ArrayList arr = new ArrayList();
//dosomething
{
object[] oResult = e.Result as object[];
TreeNode tNodeParent = oResult[0] as TreeNode;
DataTable dtChildren = oResult[1] as DataTable;
DataTable dgvlist = oResult[2] as DataTable;
ArrayList arr = new ArrayList();
//dosomething
}
posted @ 2012-04-23 08:58 keepsilence 阅读(11) 评论(0) 编辑
public class PlugingManager
{
//插件装载器
public ArrayList Plugins = new ArrayList();
//插件FullName
public ArrayList PlugFullName = new ArrayList();
//插件类型
public ArrayList PlugTypes = new ArrayList();
#region 构造函数
/// <summary>
/// PlugingManager插件加载
/// </summary>
/// <param name="plugspath">插件所在目录必须是运行目录中的文件夹</param>
/// <param name="StartsWith">加载指定插件(插件包含的名称)</param>
/// <param name="InterfaceName">插件接口名称</param>
public PlugingManager(string plugspath,string StartsWith,string InterfaceName)
{
//获取插件目录(plugins)下所有文件
string[] files = Directory.GetFiles(Application.StartupPath + @"\\" + plugspath);
foreach (string file in files)
{
if (file.ToUpper().EndsWith(StartsWith.ToUpper()))
{
try
{
//Assembly ab = Assembly.LoadFrom(file);
Assembly ab = null;
//先将插件拷贝到内存缓冲
byte[] addinStream = null;
using(FileStream input = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
{
BinaryReader reader = new BinaryReader(input);
addinStream = reader.ReadBytes((int) input.Length);
}
ab = Assembly.Load(addinStream); //加载内存中的Dll
Type[] types = ab.GetTypes();
foreach (Type t in types)
{
if (t.GetInterface(InterfaceName) != null)
{
Plugins.Add(ab.CreateInstance(t.FullName));
PlugFullName.Add(t.FullName);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
#endregion
}
{
//插件装载器
public ArrayList Plugins = new ArrayList();
//插件FullName
public ArrayList PlugFullName = new ArrayList();
//插件类型
public ArrayList PlugTypes = new ArrayList();
#region 构造函数
/// <summary>
/// PlugingManager插件加载
/// </summary>
/// <param name="plugspath">插件所在目录必须是运行目录中的文件夹</param>
/// <param name="StartsWith">加载指定插件(插件包含的名称)</param>
/// <param name="InterfaceName">插件接口名称</param>
public PlugingManager(string plugspath,string StartsWith,string InterfaceName)
{
//获取插件目录(plugins)下所有文件
string[] files = Directory.GetFiles(Application.StartupPath + @"\\" + plugspath);
foreach (string file in files)
{
if (file.ToUpper().EndsWith(StartsWith.ToUpper()))
{
try
{
//Assembly ab = Assembly.LoadFrom(file);
Assembly ab = null;
//先将插件拷贝到内存缓冲
byte[] addinStream = null;
using(FileStream input = new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read))
{
BinaryReader reader = new BinaryReader(input);
addinStream = reader.ReadBytes((int) input.Length);
}
ab = Assembly.Load(addinStream); //加载内存中的Dll
Type[] types = ab.GetTypes();
foreach (Type t in types)
{
if (t.GetInterface(InterfaceName) != null)
{
Plugins.Add(ab.CreateInstance(t.FullName));
PlugFullName.Add(t.FullName);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
#endregion
}
PlugingManager plug = new PlugingManager("Plugs", "Garden.Plugs.dll", "IPlug");
var win = plug.Plugins.ToArray().FirstOrDefault(m => ((Type)m.GetType()).Name.ToLower() == this.Tag.ToString().ToLower());
MethodInfo OnShowDlg = ((Type)win.GetType()).GetMethod("ShowSelf");
Form cl = (Form)OnShowDlg.Invoke(win, null);
cl.WindowState = FormWindowState.Maximized;
cl.MdiParent = this;
cl.Show();
foreach (object obj in plug.Plugins)
{
Type t = obj.GetType();
MethodInfo OnShowDlg = t.GetMethod("ShowSelf");
Control cl = (Control)OnShowDlg.Invoke(obj, null);
Control con = GetControlFromForm(t.Name, this);
if (con != null)
{
con.Controls.Add(cl);
cl.Dock = DockStyle.Fill;
isbreak = false;
con = null;
}
var win = plug.Plugins.ToArray().FirstOrDefault(m => ((Type)m.GetType()).Name.ToLower() == this.Tag.ToString().ToLower());
MethodInfo OnShowDlg = ((Type)win.GetType()).GetMethod("ShowSelf");
Form cl = (Form)OnShowDlg.Invoke(win, null);
cl.WindowState = FormWindowState.Maximized;
cl.MdiParent = this;
cl.Show();
foreach (object obj in plug.Plugins)
{
Type t = obj.GetType();
MethodInfo OnShowDlg = t.GetMethod("ShowSelf");
Control cl = (Control)OnShowDlg.Invoke(obj, null);
Control con = GetControlFromForm(t.Name, this);
if (con != null)
{
con.Controls.Add(cl);
cl.Dock = DockStyle.Fill;
isbreak = false;
con = null;
}
}
posted @ 2012-04-23 08:52 keepsilence 阅读(148) 评论(0) 编辑
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
static extern IntPtr GetConsoleWindow();
posted @ 2011-11-10 16:37 keepsilence 阅读(20) 评论(0) 编辑
第一步

第二步

第三步

下面就是Next--->Next了
发送测试
USE msdb
GO
EXEC sp_send_dbmail @profile_name='PinalProfile',
@recipients='test@Example.com',
@subject='Test message',
@body='This is the body of the test message.
Congrates Database Mail Received By you Successfully.'
GO
EXEC sp_send_dbmail @profile_name='PinalProfile',
@recipients='test@Example.com',
@subject='Test message',
@body='This is the body of the test message.
Congrates Database Mail Received By you Successfully.'
posted @ 2011-11-03 15:06 keepsilence 阅读(20) 评论(0) 编辑
posted @ 2011-11-03 14:05 keepsilence 阅读(10) 评论(0) 编辑
很多时候为了做集成我们别无选择的要用C#来调用C/C++的API,如果你对C#和C/C++数据类型对应关系不是很了解,那么这就是一件很头疼的事情了。
下面来看看具体怎么使用
void* OpenDevice(int nMyAddress, HWND hWnd)
void CloseDevice(void* pDevice)
void SetMyAddress(void* pDevice, int nAddress)
BOOL ConnectPort(void* pDevice, LPCTSTR lpCommDef)
BOOL IsConnect(void* pDevice)
void SetAddLog(void* pDevice, BOOL bAddLog)
void SetCommKey(void* pDevice, LPCTSTR lpCommKey)
void SetInnerCode (void* pDevice, BOOL bBig5)
BOOL DisConnectPort(void* pDevice)
void SetWaitTime(void* pDevice, DWORD dwWaitTime)
void* StartICDMCommand(void* pDevice, int nAddress, int nCommand,
void* pParameters = NULL, int nSizeOfParameter = 0)
int GetSizeOfData(void* pCommand)
BOOL GetData(void* pCommand, void* pDataBuffer, int nSize)
int GetCmdResult(void* pCommand)
void EndICDMCommand(void* pCommand)
void RecvEdition(LPTSTR lpEdition)
void CloseDevice(void* pDevice)
void SetMyAddress(void* pDevice, int nAddress)
BOOL ConnectPort(void* pDevice, LPCTSTR lpCommDef)
BOOL IsConnect(void* pDevice)
void SetAddLog(void* pDevice, BOOL bAddLog)
void SetCommKey(void* pDevice, LPCTSTR lpCommKey)
void SetInnerCode (void* pDevice, BOOL bBig5)
BOOL DisConnectPort(void* pDevice)
void SetWaitTime(void* pDevice, DWORD dwWaitTime)
void* StartICDMCommand(void* pDevice, int nAddress, int nCommand,
void* pParameters = NULL, int nSizeOfParameter = 0)
int GetSizeOfData(void* pCommand)
BOOL GetData(void* pCommand, void* pDataBuffer, int nSize)
int GetCmdResult(void* pCommand)
void EndICDMCommand(void* pCommand)
void RecvEdition(LPTSTR lpEdition)
上面是api接口原函数
如果想要在C#里面使用就要重新定义以为他是非托管类行
[DllImport("DLL4k.dll", ExactSpelling = false, EntryPoint = "OpenDevice")]
public static extern IntPtr OpenDevice(int nMyAddress, IntPtr hwnd);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "CloseDevice")]
public static extern void CloseDevice(IntPtr hwnd);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void SetMyAddress(IntPtr hwnd, int nMyAddress);
[DllImport("DLL4k.dll", ExactSpelling = false, EntryPoint = "ConnectPort")]
public static extern bool ConnectPort(IntPtr pDevice, StringBuilder port);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "IsConnect")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool IsConnect(IntPtr pDevice);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "SetAddLog")]
public static extern void SetAddLog(IntPtr pDevice, bool isaddlog);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void SetCommKey(IntPtr pDevice, string str);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void SetInnerCode(IntPtr pDevice, bool isbog5);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "DisConnectPort")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool DisConnectPort(IntPtr pDevice);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "SetWaitTime")]
public static extern void SetWaitTime(IntPtr pDevice, int dwWaitTime);
[DllImport("DLL4k.dll", ExactSpelling = false, EntryPoint = "StartICDMCommand")]
public static extern IntPtr StartICDMCommand(IntPtr pDevice, int nAddress, int nCommand, IntPtr pParameters, int nSizeOfParameter = 0);
[DllImport("DLL4k.dll", EntryPoint = "GetSizeOfData", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetSizeOfData(IntPtr pParameters);
[DllImport("DLL4k.dll", EntryPoint = "GetData", SetLastError = true)]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool GetData(IntPtr pCommand, IntPtr pDataBuffer, int nSize);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "GetCmdResult")]
public static extern int GetCmdResult(IntPtr pCommand);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "EndICDMCommand")]
public static extern void EndICDMCommand(IntPtr pDevice);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void RecvEdition(string str);
public static extern IntPtr OpenDevice(int nMyAddress, IntPtr hwnd);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "CloseDevice")]
public static extern void CloseDevice(IntPtr hwnd);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void SetMyAddress(IntPtr hwnd, int nMyAddress);
[DllImport("DLL4k.dll", ExactSpelling = false, EntryPoint = "ConnectPort")]
public static extern bool ConnectPort(IntPtr pDevice, StringBuilder port);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "IsConnect")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool IsConnect(IntPtr pDevice);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "SetAddLog")]
public static extern void SetAddLog(IntPtr pDevice, bool isaddlog);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void SetCommKey(IntPtr pDevice, string str);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void SetInnerCode(IntPtr pDevice, bool isbog5);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "DisConnectPort")]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool DisConnectPort(IntPtr pDevice);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "SetWaitTime")]
public static extern void SetWaitTime(IntPtr pDevice, int dwWaitTime);
[DllImport("DLL4k.dll", ExactSpelling = false, EntryPoint = "StartICDMCommand")]
public static extern IntPtr StartICDMCommand(IntPtr pDevice, int nAddress, int nCommand, IntPtr pParameters, int nSizeOfParameter = 0);
[DllImport("DLL4k.dll", EntryPoint = "GetSizeOfData", SetLastError = true, CharSet = CharSet.Auto)]
public static extern int GetSizeOfData(IntPtr pParameters);
[DllImport("DLL4k.dll", EntryPoint = "GetData", SetLastError = true)]
[return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
public static extern bool GetData(IntPtr pCommand, IntPtr pDataBuffer, int nSize);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "GetCmdResult")]
public static extern int GetCmdResult(IntPtr pCommand);
[DllImport("DLL4k.dll", SetLastError = true, EntryPoint = "EndICDMCommand")]
public static extern void EndICDMCommand(IntPtr pDevice);
[DllImport("DLL4k.dll", SetLastError = true)]
public static extern void RecvEdition(string str);
以上就是c#调用函数一定要是静态的
下面来看看一个列子
public IntPtr hwnd;
StringBuilder sb = new StringBuilder();
public static IntPtr showhwnd = System.Diagnostics.Process.GetCurrentProcess().Handle;
public static IntPtr api = OpenDevice(0, showhwnd);
public IntPtr kk = new IntPtr();
public static int rcount = 0;
StringBuilder sb = new StringBuilder();
public static IntPtr showhwnd = System.Diagnostics.Process.GetCurrentProcess().Handle;
public static IntPtr api = OpenDevice(0, showhwnd);
public IntPtr kk = new IntPtr();
public static int rcount = 0;
以上要是全局变量
最后是下载数据的调用例子
sb.Clear();
sb.AppendFormat("{0}:baud={1},parity=N,data=8,stop=1", cbPort.Text, cbRate.Text);
int count = 0;
if (!IsConnect(api))
{
bool islink = ConnectPort(api, sb);
DMSTATUS dmm = new DMSTATUS();
int sizenewb = Marshal.SizeOf(dmm);
IntPtr buffernew = Marshal.AllocCoTaskMem(sizenewb);
int sizenewa = 0;
try
{
//将托管对象拷贝到非托管内存
SetWaitTime(api, 3000);
Marshal.StructureToPtr(dmm, buffernew, true);
SetAddLog(api, true);
kk = StartICDMCommand(api, 0, (int)CMDWORD.nRecvDMStatus, buffernew, sizenewb);
rcount = GetCmdResult(kk);
if (rcount != 0)
{
sizenewa = GetSizeOfData(kk);
bool isok = GetData(kk, buffernew, sizenewa);
DMSTATUS mm = (DMSTATUS)Marshal.PtrToStructure(buffernew, typeof(DMSTATUS));
count = mm.nRecordCount;
EndICDMCommand(kk);
StringBuilder sbt = new StringBuilder();
int totalcount = 0;
if (count % 100 == 0)
{
totalcount = count / 100;
}
else
{
totalcount = (count / 100) + 1;
}
for (int i = 0; i < totalcount; i++)
{
bool link = ConnectPort(api, sb);
if (link)
{
ATTGUARDRECORD[] Record = new ATTGUARDRECORD[100];
int sizerecord = Marshal.SizeOf(Record[0]);
IntPtr bufferrecord = Marshal.AllocCoTaskMem(sizerecord * 100);
kk = StartICDMCommand(api, 0, (int)CMDWORD.nRecvDelRecord, bufferrecord, sizerecord);
rcount = GetCmdResult(kk);
if (rcount > 0)
{
int sizecount = GetSizeOfData(kk);
GetData(kk, bufferrecord, sizecount);
for (int j = 0; j < 100; j++)
{
Record[j] = (ATTGUARDRECORD)Marshal.PtrToStructure((IntPtr)(bufferrecord + sizerecord * j), typeof(ATTGUARDRECORD));
if (Record[j].nYear > 0)
{
sbt.AppendLine(Record[j].strPersonID + "-" +Record[j].nYear.ToString() + "-" + Record[j].nMonth.ToString() + "-" + Record[j].nDay.ToString() + "-"+ Record[j].nHour.ToString() + ":" + Record[j].nMinute.ToString()+ ":" + Record[j].nSecond.ToString()+ "-" +Record[j].bOnDuty.ToString() + "-" + Record[j].bBC.ToStr ing() + "-" + Record[j].nDMAdr);
}
else
{
continue;
}
}
IntPtr del = new IntPtr();
StartICDMCommand(api, 0, (int)CMDWORD.nRecvDelRecordRlt, del);
}
}
EndICDMCommand(kk);
}
txtcontent.Text = sbt.ToString();
}
}
catch
{
}
sb.AppendFormat("{0}:baud={1},parity=N,data=8,stop=1", cbPort.Text, cbRate.Text);
int count = 0;
if (!IsConnect(api))
{
bool islink = ConnectPort(api, sb);
DMSTATUS dmm = new DMSTATUS();
int sizenewb = Marshal.SizeOf(dmm);
IntPtr buffernew = Marshal.AllocCoTaskMem(sizenewb);
int sizenewa = 0;
try
{
//将托管对象拷贝到非托管内存
SetWaitTime(api, 3000);
Marshal.StructureToPtr(dmm, buffernew, true);
SetAddLog(api, true);
kk = StartICDMCommand(api, 0, (int)CMDWORD.nRecvDMStatus, buffernew, sizenewb);
rcount = GetCmdResult(kk);
if (rcount != 0)
{
sizenewa = GetSizeOfData(kk);
bool isok = GetData(kk, buffernew, sizenewa);
DMSTATUS mm = (DMSTATUS)Marshal.PtrToStructure(buffernew, typeof(DMSTATUS));
count = mm.nRecordCount;
EndICDMCommand(kk);
StringBuilder sbt = new StringBuilder();
int totalcount = 0;
if (count % 100 == 0)
{
totalcount = count / 100;
}
else
{
totalcount = (count / 100) + 1;
}
for (int i = 0; i < totalcount; i++)
{
bool link = ConnectPort(api, sb);
if (link)
{
ATTGUARDRECORD[] Record = new ATTGUARDRECORD[100];
int sizerecord = Marshal.SizeOf(Record[0]);
IntPtr bufferrecord = Marshal.AllocCoTaskMem(sizerecord * 100);
kk = StartICDMCommand(api, 0, (int)CMDWORD.nRecvDelRecord, bufferrecord, sizerecord);
rcount = GetCmdResult(kk);
if (rcount > 0)
{
int sizecount = GetSizeOfData(kk);
GetData(kk, bufferrecord, sizecount);
for (int j = 0; j < 100; j++)
{
Record[j] = (ATTGUARDRECORD)Marshal.PtrToStructure((IntPtr)(bufferrecord + sizerecord * j), typeof(ATTGUARDRECORD));
if (Record[j].nYear > 0)
{
sbt.AppendLine(Record[j].strPersonID + "-" +Record[j].nYear.ToString() + "-" + Record[j].nMonth.ToString() + "-" + Record[j].nDay.ToString() + "-"+ Record[j].nHour.ToString() + ":" + Record[j].nMinute.ToString()+ ":" + Record[j].nSecond.ToString()+ "-" +Record[j].bOnDuty.ToString() + "-" + Record[j].bBC.ToStr ing() + "-" + Record[j].nDMAdr);
}
else
{
continue;
}
}
IntPtr del = new IntPtr();
StartICDMCommand(api, 0, (int)CMDWORD.nRecvDelRecordRlt, del);
}
}
EndICDMCommand(kk);
}
txtcontent.Text = sbt.ToString();
}
}
catch
{
}
}
这样就结束了
posted @ 2011-09-20 13:33 keepsilence 阅读(147) 评论(0) 编辑
在很多时候我们写好一个自定义控件后(编译后),把它拖放到窗体的时候他就加载了,但是可是有时候我们也许并不希望这样
然而直接设置designmodel==true往往无效
因此我们选择这样去处理
public UserControl1()
{
InitializeComponent();
if (this.GetService(typeof(IDesignerHost)) != null || System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime) {
label1.Text = DateTime.Now.ToLongDateString();
}
else
{
label1.Text = DateTime.Now.ToShortDateString();
}
}
posted @ 2011-05-13 10:58 keepsilence 阅读(53) 评论(0) 编辑
摘要: Sandcastle Help File Builder是基于Sandcastle的第三方GUI工具,网址:http://shfb.codeplex.com/下载最新版本然后安装,一步一步的注册。完成后打开你的项目--右键属性---生成选中xml然后用GUI建立一个新项目右键点击Documentation Sources --add选择你的xml和dll在gui的属性里面FrameworkVersion要选择2.0Language选择中文(安装gui时候可能需要的工具)2008sdk 下载地址http://www.microsoft.com/downloads/details.aspx?Fam阅读全文
posted @ 2011-03-03 09:32 keepsilence 阅读(45) 评论(0) 编辑
摘要: 首先这不是一编很高深的文章,意义在于学习。什么是 Crystal Reports?Crystal Reports 自 1993 年开始就已经是 Visual Studio 的一部分,并且现在已经成为了 Visual Studio 2005 中的标准报表创建工具。每套 Visual Studio 2005 都附带了该工具,并且它直接集成到开发环境中。利用 Crystal Reports for Visual Studio 2005 能够在 Windows 环境中创建达到演示质量的交互式内容。使用 Crystal Reports for Visual Studio 2005 可在基于 GUI 的程阅读全文
posted @ 2010-05-27 10:49 keepsilence 阅读(139) 评论(0) 编辑
摘要: 很多时候在做完自己的是以后都喜欢来园子里面看看,但多数时候是学习,今天闲来之于也学学写点东西今天在公司做一个上传图片的东西于是就在gg上找了一个php+swf上传的东西没有办法公司用的是.net于是就动手改动了代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org阅读全文
posted @ 2009-12-12 15:12 keepsilence 阅读(2217) 评论(9) 编辑

