CodeSmith使用总结--下拉列表和文件夹对话框属性
上一篇有点短了,因为实在没有什么可说的,这一篇会多一点。O(∩_∩)O~
一、下拉列表
关于如何在CodeSmith中创建一个下拉列表的属性框其实很简单,是要使用C#中的枚举就行了,看操作。
首先定义一个枚举,跟定义方法一样,也要包含在<script runat="template">……</script>标签中,代码语法就是我们在定义模板的时候选择的语法,这里我用的是C#,如下:
<script runat="template">
/// <summary>
/// 定义一个下拉列表的枚举
/// </summary>
public enum CollectionTypeEnum
{
One,
Two,
Three,
Four,
Five
}
</script>
Like This,我们就定义好了一个枚举了。接下来就是我们在定义属性的时候,类型选择这个枚举。
<%@ Property Name="DropDownList" Type="CollectionTypeEnum" Default="One" Description="这是一个下拉列表框"%>
编译一下就能看见效果了。

调用的时候就像普通属性一样就行<%=DropDownList %>。
二、文件夹对话框
好了,定义好了下拉列表框后我们就开始下一个内容,文件夹对话框。
文件夹对话框有两种定义方式,一种是普通定义的那种,另一种就是用代码定义,不过我经常用第一种,谁让他简单呢。
首先我们要引用两个命名空间System.Windows.Forms.Design和System.Drawing.Design如下:
<%@ Import Namespace="System.Windows.Forms.Design" %>
<%@ Import Namespace="System.Drawing.Design" %>
接下来只要在定义属性的时候,类型选择FolderNameEditor就行了
<%@ Property Name="Test1" Type="String" Editor="FolderNameEditor" EditorBase="UITypeEditor" Optional="False" %>
当然你也可以写全了,全路径如下:
<%@ Property Name="Test2" Type="String" Editor="System.Windows.Forms.Design.FileNameEditor" EditorBase="System.Drawing.Design.UITypeEditor" Optional="False" %>
编译一下就能看见了

第二种方法也要引用命名空间,然后不添加属性标签,直接在代码中写出来。具体代码如下:
#region 定义一个弹出选择文件夹获取路径的属性
private string _outputDirectory = String.Empty;
/// <summary>
/// 调用文件夹对话框
/// </summary>
[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
[Optional, NotChecked]
[DefaultValue("")]
/// <summary>
/// 属性名
/// </summary>
public string OutputDirectory
{
get
{
return _outputDirectory;
}
set
{
if (value.EndsWith("\\")) value = value.Substring(, value.Length -);
_outputDirectory = value;
}
}
#endregion
用这种方法的好处是如果我们要处理路径,在输出前处理就可以了,不用再单另的写代码了。呵呵
这里有一点FolderNameEditor是文件夹,那么相应的FileNameEditor就是文件了。
取值方法如同正常属性一样。
示例模板:
<%--
Name: 测试模板4
Author: GodFinal
Description:
--%>
<%@ Template Language="C#" TargetLanguage="C#" Description="" %>
<%@ Property Name="DropDownList" Type="CollectionTypeEnum" Default="One" Description="这是一个下拉列表框"%>
<%@ Import Namespace="System.Windows.Forms.Design" %>
<%@ Import Namespace="System.Drawing.Design" %>
<%@ Property Name="OutputDirectory1" Type="String" Editor="FolderNameEditor" EditorBase="UITypeEditor" Optional="False" %>
<%@ Property Name="OutputDirectory2" Type="String" Editor="System.Windows.Forms.Design.FileNameEditor" EditorBase="System.Drawing.Design.UITypeEditor" Optional="False" %>
<%=DropDownList %>
<%=OutputDirectory%>
<%=OutputDirectory1%>
<%=OutputDirectory2%>
<script runat="template">
/// <summary>
/// 定义一个下拉列表的枚举
/// </summary>
public enum CollectionTypeEnum
{
One,
Two,
Three,
Four,
Five
}
#region 定义一个弹出选择文件夹对话框获取路劲的属性
private string _outputDirectory = String.Empty;
/// <summary>
/// 调用文件夹对话框
/// </summary>
[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
[Optional, NotChecked]
[DefaultValue("")]
/// <summary>
/// 属性名
/// </summary>
public string OutputDirectory
{
get
{
return _outputDirectory;
}
set
{
if (value.EndsWith("\\")) value = value.Substring(0, value.Length -1);
_outputDirectory = value;
}
}
#endregion
</script>
最终结果:


CodeSmith使用总结--下拉列表和文件夹对话框属性的更多相关文章
- CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习
CFileDialog(文件夹对话框类) 主要用于文件的保存,另存,打开,关闭等功能 功能“另存为”的实现: void CTXTDlg::OnFileSaveas() { LPCTSTR szFilt ...
- Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹
Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹 unit Unit2; interface uses Windows, Messages, SysUtils, V ...
- java 选择文件夹对话框
java swing 选择文件夹对话框 import java.io.File; import javax.swing.JFileChooser; public class Test2 { publi ...
- MFC中打开选择文件夹对话框,并将选中的文件夹地址显示在编辑框中
一般用于选择你要将文件保存到那个目录下,此程序还包含新建文件夹功能 BROWSEINFO bi; ZeroMemory(&bi, sizeof(BROWSEINFO)); //指定存放文件的 ...
- winform 实现选择文件和选择文件夹对话框
//选择文件,点击[浏览],选择文件 private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileD ...
- VC++ 打开文件或文件夹对话框的实现方法
实际工作开发中,由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有.特总结了常用的实现方法,仅供开发参考. 1. 打开文件对话框 常用的方法是使用系统的CFileDialo ...
- c++选择文件夹对话框
1,目的 提供一个对话框供用户选择一个文件夹路径. 2,原理&实现 先贴上这个工具类的源码: 在你的程序中使用静态方法 CSelectFolderDlg::Show() 就能显示一个选择文件夹 ...
- NX二次开发-弹出选择文件夹对话框
这个UFUN和NOPEN里没有对应的函数和类,要用C++的方法去做. #include "afxdialogex.h"//弹出选择文件夹对话框头文件 #include " ...
- 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图
[源码下载] 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取文件夹的属性 ...
随机推荐
- datagrid数据导出到excel文件给客户端下载的几种方法
方法一:导出到csv文件,存放在服务器端任一路径,然后给客户下载 优点: 1.可以进行身份认证后给客户下载,如果放到非web目录就没有对应的url,客户无法随时下载. 2.也是因为生成了文件,所以占用 ...
- RecycleView 瀑布流滑动移位
RecycleView StaggeredLayoutManager(瀑布流)滑动的时候,默认会出现item移动的问题,需以下来个步骤来解决: 附上StaggeredLayoutManager中的一段 ...
- shell获取文件行数
获取文件行数: echo `cat $file | wc -l` 获取文件中不重复的行数(去重后) echo `awk '{$1="";print $0;}' $file_tel ...
- Qt小程序仿写----FileRead程序
该程序实现如下功能:1.打开TXT文件A.txt:2.将文件路径显示到一个文本编辑框里面,文件内容显示到一个文本域里面:3.在文本域里面更改文件内容之后,保存文本域的内容到当前文件路径下. 定义了一F ...
- Spring4分别整合mongo2.X和3.0
1.pom文件添加: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-jav ...
- RxJava 与 Retrofit 结合的最佳实践
转自:http://gank.io/post/56e80c2c677659311bed9841?from=timeline&isappinstalled=0&nsukey=g1D1Y6 ...
- dedecms文章的更新时间问题 每次更改文章时间变成最新的
dedecms 每次更改文章,更新时间这里每次改了后再来看又变成当前最新时间的了. 解决方法: 查找后台目录的 templets/article_edit.htm 这个文件. 然后打开,查找如下代码: ...
- Linux的标准输出、标准错误输出、nohup
1.在bash中标准输出可以用1来表示:通常来说这个1可以省略: 如./xxx >/dev/null 和 ./xxx 1>/dev/null 是一个意思 2.在bash中标准错误输出可以用 ...
- iOS 7 二维码
维码扫描 2014-06-13 10:20:29| 分类: iOS|举报|字号 订阅 下载LOFTER客户端 // // TCTosweepScan.m // TongCheng ...
- 【转】const的用法,特别是用在函数前面与后面的区别!
在普通的非 const成员函数中,this的类型是一个指向类类型的 const指针.可以改变this所指向的值,但不能改变 this所保存的地址. 在 const成员函数中,this的类型是一个指向 ...