I am working on a VSTO Outlook Addin for new mails. User can toggle image when he wants the mail saved.
Currently when the image is clicked i set a global bool to true.
private bool _state;
private void toggleBtn_Click(object sender, RibbonControlEventArgs e)
{
if (_state) {
_state = false;
} else {
_state = true;
}
}
Which works ok until the user opens another new mail window before sending the first one.
How can i store the state per new mail window only?
Thank so much.
Solution
There are two ways to solve this problem.
One : User Properties Excellent blog on https://www.add-in-express.com/creating-addins-blog/2013/01/30/preserve-outlook-ribbon-controls-state/
Two: Use wrapper to store the state in classes Read more on https://msdn.microsoft.com/en-us/library/office/ff973716(v=office.14).aspx
Not sure whether you can get the EntryId of the current mail being edited, if so, you can try to cache all the states into a dictionary, something like below
private Dictionary<string, bool> _states = new Dictionary<string, bool>();
private void toggleBtn_Click(object sender, RibbonControlEventArgs e)
{
MailItem ml;
// get current MailItem
// something like: MailItem ml = popupWindow.GetMail
// default false
if (!(_states.Keys.Contains(ml.EntryId))){
_states[ml.EntryId] = false;
}
// toggle the state
_states[ml.EntryId] = !_states[ml.EntryId];
}
however, you might want to handle the popup window closed event to remove the entry from the dictionary when user closes the popup (for example, email sent)
Solution
There are two ways to solve this problem.
One : User Properties Excellent blog on https://www.add-in-express.com/creating-addins-blog/2013/01/30/preserve-outlook-ribbon-controls-state/
Two: Use wrapper to store the state in classes Read more on https://msdn.microsoft.com/en-us/library/office/ff973716(v=office.14).aspx
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.