FileNameEditor类给我们提供了在CodeSmith属性面板中弹出打开或保存文件对话框的方式,在使用时,首先在模版中得添加对程序集CodeSmith.CustomProperties的引用。然后就可以在模版中定义一个属性来使用FileNameEditor:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
1
<
script runat
=
"
template
"
>
2![None.gif](/Images/OutliningIndicators/None.gif)
3
private
string
_userFileName
=
@"
c:\temp\test.txt
"
;
4![None.gif](/Images/OutliningIndicators/None.gif)
5
6![None.gif](/Images/OutliningIndicators/None.gif)
7
[Editor(
typeof
(FileNameEditor),
typeof
(System.Drawing.Design.UITypeEditor)),
8![None.gif](/Images/OutliningIndicators/None.gif)
9
Category(
"
Custom
"
), Description(
"
User selected file.
"
)]
10![None.gif](/Images/OutliningIndicators/None.gif)
11
12![None.gif](/Images/OutliningIndicators/None.gif)
13
public
string
UserFileName
14![None.gif](/Images/OutliningIndicators/None.gif)
15![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
16![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
17![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{return _userFileName;}
18![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
19![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{_userFileName= value;}
20![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
21
}
22![None.gif](/Images/OutliningIndicators/None.gif)
23
</
script
>
24![None.gif](/Images/OutliningIndicators/None.gif)
25
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![None.gif](/Images/OutliningIndicators/None.gif)
8
![None.gif](/Images/OutliningIndicators/None.gif)
9
![None.gif](/Images/OutliningIndicators/None.gif)
10
![None.gif](/Images/OutliningIndicators/None.gif)
11
![None.gif](/Images/OutliningIndicators/None.gif)
12
![None.gif](/Images/OutliningIndicators/None.gif)
13
![None.gif](/Images/OutliningIndicators/None.gif)
14
![None.gif](/Images/OutliningIndicators/None.gif)
15
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
16
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
17
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
18
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
19
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
20
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
21
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
22
![None.gif](/Images/OutliningIndicators/None.gif)
23
![None.gif](/Images/OutliningIndicators/None.gif)
24
![None.gif](/Images/OutliningIndicators/None.gif)
25
![None.gif](/Images/OutliningIndicators/None.gif)
当我们执行该模版时,在属性面板中同样显示为一个按钮:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
单击该按钮,弹出一个保存文件的对话框:
我们也可以通过FileDialogAttribute来自定义弹出的对话框,修改模版为:
1
private
string
_openFileName
=
@"
c:\temp\test.txt
"
;
2![None.gif](/Images/OutliningIndicators/None.gif)
3![None.gif](/Images/OutliningIndicators/None.gif)
4
[Editor(
typeof
(FileNameEditor),
typeof
(System.Drawing.Design.UITypeEditor)),
5![None.gif](/Images/OutliningIndicators/None.gif)
6
FileDialogAttribute(FileDialogType.Open, Title
=
"
Select Input File
"
),
7![None.gif](/Images/OutliningIndicators/None.gif)
8
Category(
"
Custom
"
), Description(
"
User selected file.
"
)]
9![None.gif](/Images/OutliningIndicators/None.gif)
10
11![None.gif](/Images/OutliningIndicators/None.gif)
12
public
string
OpenFileName
13![None.gif](/Images/OutliningIndicators/None.gif)
14![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
15![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
16![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{return _openFileName;}
17![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
18![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{_openFileName= value;}
19![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
20
}
21![None.gif](/Images/OutliningIndicators/None.gif)
22
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![None.gif](/Images/OutliningIndicators/None.gif)
8
![None.gif](/Images/OutliningIndicators/None.gif)
9
![None.gif](/Images/OutliningIndicators/None.gif)
10
![None.gif](/Images/OutliningIndicators/None.gif)
11
![None.gif](/Images/OutliningIndicators/None.gif)
12
![None.gif](/Images/OutliningIndicators/None.gif)
13
![None.gif](/Images/OutliningIndicators/None.gif)
14
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
15
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
16
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
17
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
18
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
19
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
20
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
21
![None.gif](/Images/OutliningIndicators/None.gif)
22
![None.gif](/Images/OutliningIndicators/None.gif)
弹出的对话框如下所示:
当我们想用一个文件夹的名称来代替文件时,可以使用FolderNameEditor类。
1
<%
@ Assembly Name
=
"
System.Design
"
%>
2
<
script runat
=
"
template
"
>
3
private
string
_outputDirectory
=
@"
c:\temp
"
;
4
[Editor(
typeof
(System.Windows.Forms.Design.FolderNameEditor),
typeof
(System.Drawing.Design.UITypeEditor)),
5
Category(
"
Custom
"
), Description(
"
Output directory.
"
)]
6
public
string
OutputDirectory
7![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
8![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{return _outputDirectory;}
9![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{_outputDirectory= value;}
10
}
11
</
script
>
12![None.gif](/Images/OutliningIndicators/None.gif)
13
![None.gif](/Images/OutliningIndicators/None.gif)
2
![None.gif](/Images/OutliningIndicators/None.gif)
3
![None.gif](/Images/OutliningIndicators/None.gif)
4
![None.gif](/Images/OutliningIndicators/None.gif)
5
![None.gif](/Images/OutliningIndicators/None.gif)
6
![None.gif](/Images/OutliningIndicators/None.gif)
7
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
8
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
9
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
![dot.gif](https://www.cnblogs.com/Images/dot.gif)
10
![ExpandedBlockEnd.gif](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
11
![None.gif](/Images/OutliningIndicators/None.gif)
12
![None.gif](/Images/OutliningIndicators/None.gif)
13
![None.gif](/Images/OutliningIndicators/None.gif)
FileNameEditor重要方法和属性介绍:
公共方法:
名称 | 描述 |
EditValue | 使用由 GetEditStyle 方法提供的编辑器样式编辑指定的对象 |
GetEditStyle | 获取 EditValue 方法所使用的编辑样式 |