在做村规工具的过程中,需要设置一些参数,比如说导图的DPI,需要导出的图名等等。
每次导图前都需要设置参数,虽然有默认值,但还是需要不时的修改。
在使用的过程中,可能会有一些常用的参数,希望能够保存下来,而不是每次都去修改默认值。
于是,想到可以将这些参数保存到本地文件,然后下次打开的时候就可以自动读取本地文件上的数据。这样就会方便一些。
一、实现方法
至于要怎么实现,首先想到的是要保存的时候,将已经设置的参数写到一个txt文件里,然后需要的时候读取,应该是比较容易实现的。
做到一半,发现要保存各种格式的数据还挺麻烦的。
于是去网上搜索了一圈,发现了一个好东西:
这位博主很专业,用的是【ApeFree.DataStore】,是一个开源工具,上面的文章介绍的很详细,想深入了解的可以去看看。
当然,我业余的,用不到这么多内容,只需要简单的保存和读取即可。
以村规参数设置为例:
这是初始数据参数。修改一下DPI和图纸列表,并点击确定关闭窗口:
然后,再重新打开设置窗口:
可以看到,上次保存的参数都在,没有被重置。因为这些数据都被保存在本地,保存文件是一个txt文件:
二、实现流程
首先,需要安装【ApeFree.DataStore】。
安装好后,先创建一个【Settings】,可以设置初始值。
public class Settings
{
/// 参数设置
// 导出图纸的DPI
public int dpi { get; set; } = 300;
// 导出图纸列表
public List<string> listPic { get; set; } = new List<string>() { };
}
在初始化阶段创建一个store:
public partial class VgSetting : ArcGIS.Desktop.Framework.Controls.ProWindow
{
// 设置一个store
private LocalStore<Settings> store;
.........
}
public VgSetting()
{
InitializeComponent();
combox_pic.Items.Add("现状用地图");
combox_pic.Items.Add("规划用地图");
combox_pic.Items.Add("管制边界图");
// 创建数据存储文件
string savePath = @"C:\ProSDKSettings\Settings.txt";
store = StoreFactory.Factory.CreateLocalStore<Settings>(new ApeFree.DataStore.Local.LocalStoreAccessSettings(savePath));
}
在窗体加载的时候,读取store里的数据:
private void Form_Load(object sender, EventArgs e)
{
try
{
// 加载store
store.Load();
// 参数获取
textDPI.Text = store.Value.dpi.ToString();
listBox.Items.Clear();
foreach (var item in store.Value.listPic)
{
listBox.Items.Add(item.ToString());
}
}
catch (Exception ee)
{
MessageBox.Show(ee.Message + ee.StackTrace);
return;
}
}
在窗体关闭的时候,把store里的数据存入本地txt文件即可:
// 窗体关闭
private void Form_Closed(object sender, EventArgs e)
{
try
{
// 保存参数
store.Value.dpi = int.Parse(textDPI.Text);
store.Value.listPic = listBox.Items.Cast<string>().ToList();
// 保存store
store.Save();
}
catch (Exception ee)
{
MessageBox.Show(ee.Message + ee.StackTrace);
return;
}
}
以上即可实现工具的功能,【ApeFree.DataStore】还有不少东西,后面再慢慢学习吧。
三、工具文件分享
我把工具都集合成工具箱,不再单独放单个工具,可以到这里下载完整工具箱,会不断更新:
【ArcGIS Pro二次开发】:CC工具箱
https://blog.csdn.net/xcc34452366/article/details/131506345
PS:可以直接点击…bin\Debug\net6.0-windows\下的.esriAddinX文件直接安装。