Gewusst wie: Beibehalten von Positionsinformationen für benutzerdefinierte Symbolleisten zwischen Outlook-Sitzungen
Dieses Beispiel veranschaulicht einen möglichen Weg, die Position einer benutzerdefinierten Outlook-Symbolleiste zu speichern und wiederherzustellen. Der Code erstellt eine Symbolleiste und speichert deren Position beim Beenden von Outlook in einer Datei für Benutzereinstellungen. Bei einem späteren Start von Outlook wird die Symbolleiste neu erstellt und anhand der gespeicherten Einstellungen positioniert.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für Outlook 2007. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
Beispiel
Dim commandBar As Office.CommandBar
Dim WithEvents button As Office.CommandBarButton
Const TOOLBARNAME As String = "ExampleBar"
Const REGROOT As String = "Software\YourCompany\YourApp"
Dim WithEvents explorerEvents As Outlook.ExplorerEvents_10_Event
Dim explorer As Outlook.Explorer
Private Sub ThisAddIn_Startup(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Me.Startup
explorer = Me.Application.ActiveExplorer()
If (explorer IsNot Nothing) Then
commandBar = Me.Application.ActiveExplorer.CommandBars.Add( _
TOOLBARNAME, _
Office.MsoBarPosition.msoBarFloating, _
False, _
True)
button = TryCast(commandBar.Controls.Add( _
Office.MsoControlType.msoControlButton, _
System.Type.Missing, System.Type.Missing, _
1, True), Office.CommandBarButton)
button.Style = _
Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption
button.Caption = "Button 1"
button.Tag = "newButton"
LoadCommandBarSettings()
End If
End Sub
Private Sub SaveCommandBarSettings()
MySettings.Default("CommandBarTop") = commandBar.Top
MySettings.Default("CommandBarLeft") = commandBar.Left
MySettings.Default("CommandBarVisible") = commandBar.Visible
MySettings.Default("CommandBarPosition") = CInt(commandBar.Position)
MySettings.Default("CommandBarRowIndex") = commandBar.RowIndex
MySettings.Default.Save()
End Sub
Private Sub LoadCommandBarSettings()
Dim position As Microsoft.Office.Core.MsoBarPosition = _
CType(MySettings.Default("CommandBarPosition"), _
Microsoft.Office.Core.MsoBarPosition)
Dim rowIndex As Integer = _
CInt(MySettings.Default("CommandBarRowIndex"))
commandBar.RowIndex = rowIndex
Dim top As Integer = _
CInt(MySettings.Default("CommandBarTop"))
commandBar.Top = _
CInt(IIf(top <> 0, top, _
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height / 2))
Dim left As Integer = _
CInt(MySettings.Default("CommandBarLeft"))
commandBar.Left = _
CInt(IIf(left <> 0, left, _
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width / 2))
Dim visible As Boolean = _
CBool(MySettings.Default("CommandBarVisible"))
commandBar.Visible = visible
End Sub
Private Sub Click(ByVal ctrl As _
Microsoft.Office.Core.CommandBarButton, _
ByRef cancelDefault As Boolean) Handles Button.Click
System.Windows.Forms.MessageBox.Show("Hello World!")
End Sub
Sub ThisAddIn_Close() Handles explorerEvents.Close
SaveCommandBarSettings()
End Sub
Office.CommandBar commandBar;
Office.CommandBarButton button;
private const string TOOLBARNAME = "ExampleBar";
private Outlook.Explorer explorer;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
explorer = this.Application.ActiveExplorer();
if (explorer != null)
{
((Outlook.ExplorerEvents_10_Event)explorer).Close +=
new Microsoft.Office.Interop.Outlook.ExplorerEvents_10_CloseEventHandler(ThisAddIn_Close);
commandBar = this.Application.ActiveExplorer().CommandBars.Add(TOOLBARNAME,
Office.MsoBarPosition.msoBarFloating, false, true);
button = commandBar.Controls.Add(
Office.MsoControlType.msoControlButton,
System.Type.Missing, System.Type.Missing,
1, true) as Office.CommandBarButton;
button.Style =
Microsoft.Office.Core.MsoButtonStyle.msoButtonCaption;
button.Caption = "Button 1";
button.Tag = "newButton";
button.Click += new Microsoft.Office.Core.
_CommandBarButtonEvents_ClickEventHandler(button_Click);
LoadCommandBarSettings();
}
}
private void LoadCommandBarSettings()
{
Microsoft.Office.Core.MsoBarPosition position =
(Microsoft.Office.Core.MsoBarPosition)Properties.Settings
.Default["CommandBarPosition"];
commandBar.Position = position;
int rowIndex =
Convert.ToInt32(
Properties.Settings.Default["CommandBarRowIndex"]);
commandBar.RowIndex = rowIndex;
int top =
Convert.ToInt32(
Properties.Settings.Default["CommandBarTop"]);
commandBar.Top =
top != 0 ? top : System.Windows.Forms.Screen.PrimaryScreen.
Bounds.Height / 2;
int left =
Convert.ToInt32(
Properties.Settings.Default["CommandBarLeft"]);
commandBar.Left =
left != 0 ? left : System.Windows.Forms.Screen.PrimaryScreen.
Bounds.Width / 2;
bool visible = Convert.ToBoolean(
Properties.Settings.Default["CommandBarVisible"]);
commandBar.Visible = visible;
}
private void SaveCommandBarSettings()
{
Properties.Settings.Default["CommandBarTop"] = commandBar.Top;
Properties.Settings.Default["CommandBarLeft"] = commandBar.Left;
Properties.Settings.Default["CommandBarVisible"] =
commandBar.Visible;
Properties.Settings.Default["CommandBarPosition"] =
(int)commandBar.Position;
Properties.Settings.Default["CommandBarRowIndex"] =
commandBar.RowIndex;
Properties.Settings.Default.Save();
}
void button_Click(Microsoft.Office.Core.CommandBarButton Ctrl,
ref bool CancelDefault)
{
System.Windows.Forms.MessageBox.Show("Hello world!");
}
void ThisAddIn_Close()
{
SaveCommandBarSettings();
}
Kompilieren des Codes
Für dieses Beispiel ist Folgendes erforderlich:
Fünf Benutzereinstellungen. Doppelklicken Sie im Projektordner Eigenschaften (C#) bzw. im Projektordner Mein Projekt (Visual Basic) auf das Symbol Settings.settings, und fügen Sie die folgenden benutzerbezogenen Eigenschaften hinzu:
CommandBarTop, type int, default value = 0
CommandBarLeft, type int, default value = 0
CommandBarVisible, type boolean, default value = true
CommandBarPosition, type int, default value = 4
CommandBarRowIndex, type int, default value = 1
Siehe auch
Aufgaben
Gewusst wie: Erstellen von Office-Symbolleisten
Gewusste wie: Hinzufügen von Befehlen zu Kontextmenüs in Excel
Weitere Ressourcen
Übersicht über das Outlook-Objektmodell