上一篇有点短了,因为实在没有什么可说的,这一篇会多一点。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使用总结--下拉列表和文件夹对话框属性的更多相关文章

  1. CFileDialog(文件夹对话框类)和CFontDialog(字体设置对话框类)的使用学习

    CFileDialog(文件夹对话框类) 主要用于文件的保存,另存,打开,关闭等功能 功能“另存为”的实现: void CTXTDlg::OnFileSaveas() { LPCTSTR szFilt ...

  2. Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹

    Delphi 弹出Windows风格的选择文件夹对话框, 还可以新建文件夹     unit Unit2; interface uses  Windows, Messages, SysUtils, V ...

  3. java 选择文件夹对话框

    java swing 选择文件夹对话框 import java.io.File; import javax.swing.JFileChooser; public class Test2 { publi ...

  4. MFC中打开选择文件夹对话框,并将选中的文件夹地址显示在编辑框中

    一般用于选择你要将文件保存到那个目录下,此程序还包含新建文件夹功能 BROWSEINFO bi; ZeroMemory(&bi, sizeof(BROWSEINFO));  //指定存放文件的 ...

  5. winform 实现选择文件和选择文件夹对话框

    //选择文件,点击[浏览],选择文件 private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileD ...

  6. VC++ 打开文件或文件夹对话框的实现方法

    实际工作开发中,由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有.特总结了常用的实现方法,仅供开发参考. 1. 打开文件对话框 常用的方法是使用系统的CFileDialo ...

  7. c++选择文件夹对话框

    1,目的 提供一个对话框供用户选择一个文件夹路径. 2,原理&实现 先贴上这个工具类的源码: 在你的程序中使用静态方法 CSelectFolderDlg::Show() 就能显示一个选择文件夹 ...

  8. NX二次开发-弹出选择文件夹对话框

    这个UFUN和NOPEN里没有对应的函数和类,要用C++的方法去做. #include "afxdialogex.h"//弹出选择文件夹对话框头文件 #include " ...

  9. 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图

    [源码下载] 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取文件夹的属性 ...

随机推荐

  1. 配置 VS 2015 开发跨平台手机应用

    为了使用 VS 2015 开发跨平台手机应用,VS 2015 装了很多次,遇到了很多坑,才终于弄明白怎样配置才能正常使用C#开发手机应用,现把步骤分享给大家,以免大家少走弯路. 运行环境: Windo ...

  2. (转)JSON对象长度和遍历方法

    最近在修改一个HTML页面的JS的时候遍历JSON对象,却怎么也调试不通过.怪这个HTML网页不知道用了什么方法禁止了js错误提示,刚开始的时候不知道有这个问题,用chrome的开发人员工具都没发现错 ...

  3. Emoji表情在网页中显示

    最近遇到一个项目,客户手机上发送的表情要在电脑网页中显示,没有找到简便方法,于是有了以下方案. 由于Emoji表情传到后台是“口”,怎么找出接收数据中的表情是关键,各种搜索后,我用下面的正则表达式匹配 ...

  4. 关于javascript中setTimeout()和clearTimeout()的疑惑。

    由于在w3school中学习javascript时,当学到setTimeout()和clearTimeout()方法时.根据它所提供的例子(下面的代码转自w3cschool)—计数程序,发现当你不停的 ...

  5. uva 10107 - What is the Median?

    #include <cstdio> #include <iostream> using namespace std; ]; int main() { int i, cur_in ...

  6. Java并发编程与技术内幕:线程池深入理解

    摘要: 本文主要讲了Java当中的线程池的使用方法.注意事项及其实现源码实现原理,并辅以实例加以说明,对加深Java线程池的理解有很大的帮助. 首先,讲讲什么是线程池?照笔者的简单理解,其实就是一组线 ...

  7. php 之 类,对象

    --恢复内容结束--- 一.类和对象: 1.定义: 对象:我们所见到的东西都可以称之为对象,是类实例化出来的东西 类:是对所有的同类对象抽象出来的东西 eg: 在一张表中记录了全班同学的学号,姓名,性 ...

  8. php-fpm:fastcgi_finish_request()

    开始研究php-fpm, 在php-fpm的官网上发现一些很有用的功能,记录一下 1.支持php脚本执行慢的log记录 ; The timeout for serving a single reque ...

  9. Idea使用记录--添加Problems&&解决Autowired报错could not autowire

    今天在使用Idea的时候,发现Idea在整个每次找到错误代码非常不方便(Idea如果类中有错误,没有打开过类并不会提示,比如构建工程后缺少jar包问题).我想快速看到工程哪里出问题类似于eclipse ...

  10. 在类库中使用log4net

    最近在做一个类库,用的C#写的,为了DEBUG方便需要日志输出,于是找了log4net这个工具进行日志输出; 因为调用这个类库的是C++,而且本人对C++不是很熟悉,于是无法在app.config或者 ...