Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 保存用户输入供以后使用C_C#_Excel_Visual Studio_Vsto - Fatal编程技术网

C# 保存用户输入供以后使用C

C# 保存用户输入供以后使用C,c#,excel,visual-studio,vsto,C#,Excel,Visual Studio,Vsto,好的 我有一个VSC Excel外接程序,我的组织使用它进行各种选择以将数据拉入Excel。用户界面是windows窗体。有一个下拉框,它为一个组合框提供可用参数,用户在其中选择定义查询参数的输入。我在列表框中显示参数,以便用户可以选择他/她选择的内容。我曾请求能够保存参数输入,以便用户可以快速回忆,而不必反复输入相同的信息,但不确定最佳方法 基本上,用户需要存储第一个下拉框以及列表框中与之相关的参数。创建一个文本文件保存到用户PC上是最好的方法吗?我曾想过创建一个隐藏的选项卡,将它们存储在Ex

好的

我有一个VSC Excel外接程序,我的组织使用它进行各种选择以将数据拉入Excel。用户界面是windows窗体。有一个下拉框,它为一个组合框提供可用参数,用户在其中选择定义查询参数的输入。我在列表框中显示参数,以便用户可以选择他/她选择的内容。我曾请求能够保存参数输入,以便用户可以快速回忆,而不必反复输入相同的信息,但不确定最佳方法

基本上,用户需要存储第一个下拉框以及列表框中与之相关的参数。创建一个文本文件保存到用户PC上是最好的方法吗?我曾想过创建一个隐藏的选项卡,将它们存储在Excel中,但后来仅限于该文件。我对C比较陌生,所以不确定是否有更好的方法我不知道

干杯,
Ryan

正如您所说,您不想将它们限制在关联的文件中,我的方法可能是将其保存到用户的AppData文件夹中,并使用XML序列化。您可以看到下面的示例

数据将位于C:\Users\$user$\AppData\Roaming或…\Local中,具体取决于您选择的AppData文件夹。请参阅以了解更多信息

序列化:

// this is just an example object, can do whatever you'd like here
var myObject = new MyObject()
{
    MyValue = "some data"
};

string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\\data.xml");

Directory.CreateDirectory(Path.GetDirectoryName(path));

var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Create))
{
    serializer.Serialize(fileStream, myobject);
}
string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\\data.xml");

MyObject myObject;
var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Open))
{
    myObject = (MyObject)serializer.Deserialize(fileStream);
}
MessageBox.Show(myObject.MyValue);
反序列化:

// this is just an example object, can do whatever you'd like here
var myObject = new MyObject()
{
    MyValue = "some data"
};

string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\\data.xml");

Directory.CreateDirectory(Path.GetDirectoryName(path));

var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Create))
{
    serializer.Serialize(fileStream, myobject);
}
string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\\data.xml");

MyObject myObject;
var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Open))
{
    myObject = (MyObject)serializer.Deserialize(fileStream);
}
MessageBox.Show(myObject.MyValue);

谢谢你的反馈,这很有意义。欣赏这个例子,以及与它一起去!