当用户把工具箱里的自定义控件拖放到自己的C/S 或B/S界面上时,自定义控件能否向用户CS文件里自动添加程序代码。如果能请问在写自定义控件时应该怎么写。
因为目前我做了一个自定义控件,当用户使用的时候他需要手动在他自己的项目里面添加代码,我能否在自定义控件里写好这段代码,当用户拖动控件到界面时,自定义控件就自动把我写好的代码添加到用户的程序里面去。
------解决方案--------------------------------------------------------
给你一个思路,在你的自定义控件的设计器中引用vs2005的库,好象是envdt和envdt80.通过它们可以操作工程中的任意对象,当然也包括添加代码。但我对这个库不太熟悉.你看一下MSDN吧。
------解决方案--------------------------------------------------------
可以的,
有两个重点:
1、拖放控件\组件的时机,请看我的blog:
public class Class1Designer : ComponentDesigner
{
public Class1Designer() : base()
{
}
// 从工具箱上拖放一个Component时,执行此方法。
public override void InitializeNewComponent(System.Collections.IDictionary defaultValues)
{
}
}
向cs中添加代码,应该写在InitializeNewComponent方法中
2、操纵DTE向cs中加代码:
添加EnvDTE.dll和EnvDTE80.dll
using EnvDTE;
using EnvDTE80;
TextDocument textDoc = _applicationObject.ActiveDocument.Object( "TextDocument ") as TextDocument;
textDoc.Selection.Insert( "mapserver ", 0);