- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开发了一个 outlook 插件,必须打开或关闭。
为此我声明了一个静态变量,如下所示,
ThisAddIn.cs
public static bool isAddInOn = false;
RibbonButton.cs
private void btnRibbon_Click(object sender, RibbonControlEventArgs e)
{
if (ThisAddIn.isAddInOn )
{
ThisAddIn.isAddInOn = false;
btnRibbon.Label = "Disabled";
}
else
{
ThisAddIn.isAddInOn = true;
btnRibbon.Label = "Enabled";
}
}
它正在工作。但是当我关闭 outlook 并再次打开它时,静态变量再次重置。这意味着当我默认打开 Outlook 时,我的加载项处于禁用状态。
我只想将该值存储在某个地方。这样我就可以在重新打开 Outlook 时检查该值。
场景:
1)开放的视野
2) 通过单击其 Logo (功能区中)启用加载项
3) 现在关闭前景
4) 当我再次打开 outlook 时,它必须启用
那么我该如何实现呢?
最佳答案
您可以使用多种技术来实现这一结果。确保您的设置必须在加载项启动期间序列化到某些存储/反序列化。
一个可能的解决方案是为此使用注册表(在这种情况下可能是 HKCU(当前用户,然后它将对使用您的加载项的每个用户都是私有(private)的)并且不需要特殊许可。
用于存储变量:
public void StoreInRegistry(string keyName, string value)
{
RegistryKey rootKey = Registry.CurrentUser;
string registryPath = @"Software\YourCompanyName\YourAddInName";
using (RegistryKey rk = rootKey.CreateSubKey(registryPath))
{
rk.SetValue(keyName, value, RegistryValueKind.String);
}
}
对于读取变量:
public string ReadFromRegistry(string keyName, string defaultValue)
{
RegistryKey rootKey = Registry.CurrentUser;
string registryPath = @"Software\YourCompanyName\YourAddInName";
using (RegistryKey rk = rootKey.OpenSubKey(registryPath, false))
{
if (rk == null)
{
return defaultValue;
}
var res = rk.GetValue(keyName, defaultValue);
if (res == null)
{
return defaultValue;
}
return res.ToString();
}
}
此类存储/检索变量应在加载项初始化期间用于设置您的属性。所以修改看起来像:
ThisAddin.cs
public static bool isAddInOn = ReadFromRegistry("MySetting1", "0") == "1";
RibbonButton.cs
private void btnRibbon_Click(object sender, RibbonControlEventArgs e)
{
if (ThisAddIn.isAddInOn )
{
ThisAddIn.isAddInOn = false;
btnRibbon.Label = "Disabled";
}
else
{
ThisAddIn.isAddInOn = true;
btnRibbon.Label = "Enabled";
}
StoreInRegistry("MySetting1", ThisAddIn.isAddInOn ? "1" : "0");
}
其他选项可以序列化到文件 - 一些类的设置序列化到即隔离存储、数据库(本地或中央)等。
关于c# - 在 VSTO 插件中存储一些数据的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40803924/
我有一个用于 Outlook 的 VSTO 加载项,当我必须提供 VSTO-Runtime 时需要这些信息 安装插件。 我已经找到了这个article描述先决条件,但我可以构建不符合此描述的案例: 文
我正在尝试在针对 3.5 框架和 Excel2007 使用 c# 的 VSTO 项目中使用 SpecialCells 方法。 这是我的代码: Excel.Worksheet myWs = (Excel
我们有一个 MS Word 插件,它当前使用并重命名 Word 中的插件选项卡(到 i-report)。 这样做的问题是,如果客户端安装了其他插件,其插件的功能区也会出现在 i-report 选项卡下
编辑:海报的答案是正确的,但包含内容应为 xmlns="http://schemas.microsoft.com/office/2009/07/customui"。作为副作用,XML 文件中定义的功能
我为 Outlook/Word/Excel/PowerPoint 创建了几个 VSTO 插件。当我构建它们然后启动相关程序时,加载项已安装并且运行良好。 当我尝试手动安装 DLL 时,在“Option
我正在为 Powerpoint 2010 构建一个 VSTO 加载项,加载项集的选项适用于当前打开的文件,而不是每个用户的配置。我可以将这些选项保存在当前文件中吗(我的意思是,将自定义 XML 添加到
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: How to troubleshoot a VSTO addin that does not load? 我有一个
我正在开发一个 PowerPoint C# VSTO 加载项。每当更改幻灯片的标题文本时,我希望能够捕获文本更改事件。 如何附加一个自定义事件处理程序,该处理程序会在标题文本更改时触发? 最佳答案 两
如何从插件中转到下一张/上一张幻灯片 最佳答案 由于 VSTO 几乎将 Interop 用于所有(并非所有),因此您可以将 MSDN 上的示例用于 VSTO 特定的解决方案。您要的是 SlideSho
这是错误: Error 2 Cannot assign to 'Activate' because it is a 'method group' Warning 1 Ambiguity
如何从 Microsoft Visual Studio 2010 中的 excel 加载项 vsto 作为特定单元格 B1 访问。 Globals.Sheet1.Range(“B3”).Value这不
有没有办法使用 VSTO 访问 PowerPoint 演示文稿中当前事件的幻灯片?如果我能获得当前事件的形状,那也很好。我知道如何遍历幻灯片/形状,但我找不到任何属性来确定幻灯片/形状是否处于事件状态
我们计划实现 Outlook-Addin (2007/2010)。我们的第一次尝试是使用 VSTO 2010 来完成,但我们想知道在这种情况下对客户端是否有一些特殊要求。 最佳答案 Office 20
我正在使用 VSTO 4 部署我的第一个 Visual Studio Tools for Office (VSTO) 加载项。 有一些不同的选项可用于安装加载项注册表项。它可以是 HKEY_CURRE
我正在尝试将 ListObject 从 .NET 3.5 Excel 2007 VSTO 工作簿保存到新工作表(完成),并将该新工作表保存到新工作簿(完成),而该工作簿不需要 VSTO 自定义文件(!
我正在尝试诊断为什么用 C#/VSTO 3.0/VS 2008 编写的 Outlook 插件在安装后无法加载。 该插件在我安装了 Visual Studio 2008 的开发计算机上运行得非常好。不过
办公自动化、VSTO 和 Open XML SDK 之间有什么区别?我们需要所有这些还是其中一些已经过时? 最佳答案 办公自动化是指使用 COM 互操作以编程方式操作 Office 程序(或更常见的是
我有一个 OneClick Deployed VSTO Addin,我已使用最新的 Verisign 代码签名证书 (PFX) 对其进行签名。我已经确认我在电话上通过 Verisign 支持正确签名
环境:VS 2010 | .net 3.5 |展望 2007 | VSTO 3 我有一个添加新消息类型的 outlook 插件(通过从 PostItem 继承)。我想在收到新邮件时触发 Outlook
我already know如何打开文件并从 Microsoft.Office.Interop.Excel 命名空间获取 Workbook。但是有没有办法从 Microsoft.Office.Tools
我是一名优秀的程序员,十分优秀!