İzlenecek Yol: Yer İşaretleri İçin Kısayol Menüleri Oluşturma

Bu izlenecek yolda Word belge düzeyi özelleştirmesindeki Bookmark denetimleri için kısayol menülerinin nasıl oluşturulduğu gösterilir.Eğer kullanıcı yer işaretindeki metni sağ tıklatırsa, kısayol menüsü görünür ve kullanıcıya metni biçimlendirmesi için seçenekler sunar.

Uygulama hedefi: Bu konudaki bilgiler, Word 2013 ve Word 2010 için belge düzeyi projelere yöneliktir. Daha fazla bilgi edinmek için, bkz. Office Uygulaması ve Proje Türüne Göre Kullanılabilir Özellikler.

Bu izlenecek yol aşağıdaki görevleri gösterir:

  • Visual Studio'da bir Word belgesi projesi oluşturma.

  • Metin ve yer imleri bir belge düzeyi projesinde belgeye tasarım zamanında ekleme.

  • Kısayol menüsü oluşturma.

  • Çakışan yer işaretlerini denetleme.

[!NOT]

Bilgisayarınız, aşağıdaki yönergelerde yer alan Visual Studio kullanıcı arabirimi öğelerinden bazıları için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için, bkz. Visual Studio'da Geliştirme Ayarlarını özelleştirme.

Önkoşullar

Bu izlenecek yolu tamamlamak için aşağıdaki bileşenler gereklidir:

Projeyi Oluşturma

İlk adım, Visual Studio'da Word belge projesi oluşturmaktır.

Yeni bir proje oluşturmak için

  • My Bookmark Shortcut Menu adında bir Word belge projesi oluşturun.Sihirbazda Create a new document'ı (Yeni belge oluştur) seçin.Daha fazla bilgi için bkz. Nasıl Yapılır: Visual Studio'da Office Projeleri Oluşturma.

    Visual Studio yeni Word belgesini tasarımcıda açar ve My Bookmark Shortcut Menu projesini Çözüm Gezgini'ne ekler.

Belgeye Metin ve Yer İşaretleri Ekleme

Belgenize birkaç metin ve sonra da iki tane çakışan yer işareti ekleyin.

Belgenize metin ekleme

  • Proje Tasarımcısı'nda görünen belgede aşağıdaki metni yazın.

    Bu, yer işaretindeki metni sağ tıklattığınızda kısayol menüsü oluşturmaya bir örnektir.

Belgenize Yer İşareti denetimi eklemek için

  1. İçinde araç, dan Word denetimleri sekmesinde, sürükleyin bir Bookmark belgenize denetimi.

    Add Bookmark Control (Yer İşareti Denetimi Ekle) iletişim kutusu görünür.

  2. "Metni sağ tıklattığınızda kısayol menüsü oluşturma" sözcükleri seçin ve ardından Tamam.

    bookmark1 belgeye eklenir.

  3. Başka bir tane eklemek Bookmark "yer işaretindeki metni sağ" sözcükleri denetlemek.

    bookmark2 belgeye eklenir.

    [!NOT]

    "Metni sağ tıklatın", olan her ikisinde de sözcük bookmark1 ve bookmark2.

Belgeye yer işaretini tasarım anında eklediğinizde, Bookmark denetim oluşturulur.Yer işaretlerinin birçok olayına karşı programlama yapabilirsiniz.Kullanıcı yer işareti içindeki metni sağ tıklattığında, kısayol menüsünün görünmesi için, yer işaretinin BeforeRightClick olayında kod yazabilirsiniz.

Kısayol menüsüne komut ekleme

Belgeyi sağ tıklattığınızda görüntülenen kısayol menüsünde düğme ekleyin.

Kısayol menüsüne komut eklemek için

  1. Ekleme bir Şerit XML proje öğesi.Daha fazla bilgi için bkz. Nasıl Yapılır: Şerit Özelleştirmeye Başlama.

  2. İçinde Çözüm Gezgini, select ThisDocument.vb veya ThisDocument.vb.

  3. Menü çubuğunda, seçim Görünüm, kod.

    ThisDocument sınıf dosyası Kod Düzenleyicisi'nde açılır.

  4. Aşağıdaki kodu ekleyin ThisDocument sınıf.Bu kodu geçersiz kılar CreateRibbonExtensibilityObject yöntem Şerit XML sınıfını döndüren Office uygulaması.

    Protected Overrides Function CreateRibbonExtensibilityObject() As Microsoft.Office.Core.IRibbonExtensibility
        Return New Ribbon1()
    End Function
    
    protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
    {
        return new Ribbon1();
    }
    
  5. İçinde Çözüm Gezgini, Şerit XML dosyası seçin.Varsayılan olarak, Şerit XML dosyası Ribbon1.xml olarak adlandırılır.

  6. Menü çubuğunda, seçim Görünüm, kod.

    Şerit xml dosyası Kod Düzenleyicisi'nde açılır.

  7. Kod Düzenleyicisi'nde Şerit XML dosyasının içeriğini aşağıdaki kodla değiştirin.

    <?xml version="1.0" encoding="UTF-8"?>
    <customUI xmlns="https://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
      <contextMenus>
        <contextMenu idMso="ContextMenuText">
          <button id="BoldButton" label="Bold" onAction="ButtonClick"        
               getVisible="GetVisible" />
          <button id="ItalicButton" label="Italic" onAction="ButtonClick" 
              getVisible="GetVisible"/>
        </contextMenu>
      </contextMenus>
    </customUI>
    

    Bu kod, iki düğme belgeyi sağ tıklattığınızda görüntülenen kısayol menüsü ekler.

  8. Çözüm Gezgini'nde ThisDocument'a sağ tıklayın ve ardından Kodu Göster'i tıklayın.

  9. Aşağıdaki değişkenleri ve yer işareti değişkenini sınıf düzeyinde bildirin.

    Public selectedBookmark As Microsoft.Office.Tools.Word.Bookmark
    Public ShowBoldButton As String = False 
    Public ShowItalicButton As String = False 
    Public WordTrue As Integer = -1
    Public WordFalse As Integer = 0
    
    public Microsoft.Office.Tools.Word.Bookmark selectedBookmark;
            public bool showBoldButton = false;
            public bool showItalicButton = false;
            public int WordTrue = -1;
            public int WordFalse = 0;
    
  10. İçinde Çözüm Gezgini, Şerit kod dosyası seçin.Varsayılan olarak, Şerit kod dosyası adlı Ribbon1.cs veya Ribbon1.vb.

  11. Menü çubuğunda, seçim Görünüm, kod.

    Şerit kod dosyası Kod Düzenleyici'sinde açılır.

  12. Şerit kod dosyasında aşağıdaki yöntemi ekleyin.Belge kısayol menüsüne eklediğiniz iki düğme için bir geri arama yöntemi budur.Bu yöntem, bu düğmelerin kısayol menüsünün görüntülenip görüntülenmeyeceğini belirler.Yalnızca yer işareti içindeki metni sağ tıklattığınızda, kalın ve italik düğmeleri görünür.

    Public Function GetVisible(ByVal control As Office.IRibbonControl) As Boolean 
        If control.Id = "BoldButton" Then 
            If Globals.ThisDocument.ShowBoldButton = True Then
                Globals.ThisDocument.ShowBoldButton = False 
                Return True 
            Else 
                Return False 
            End If 
        ElseIf control.Id = "ItalicButton" Then 
            If Globals.ThisDocument.ShowItalicButton = True Then
                Globals.ThisDocument.ShowItalicButton = False 
                Return True 
            Else 
                Return False 
            End If 
        Else 
            Return False 
        End If 
    End Function
    
    public bool GetVisible(Office.IRibbonControl control)
           {
               if (control.Id == "BoldButton")
               {
                   if (Globals.ThisDocument.showBoldButton == true)
                   {
                       Globals.ThisDocument.showBoldButton = false;
                       return true;
                   }
                   else
                   {
                       return false;
                   }
               }
               else if (control.Id == "ItalicButton")
               {
                   if (Globals.ThisDocument.showItalicButton == true)
                   {
                       Globals.ThisDocument.showItalicButton = false;
                       return true;
                   }
                   else
                   {
                       return false;
                   }
               }
               else
               {
                   return false;
               }
    
           }
    

Yer işaretindeki metni biçimlendirme

Yer işaretindeki metni biçimlendirmek

  1. Şerit kod dosyasına ekleyin bir ButtonClick yer işaretine biçimlendirme uygulamak için olay işleyicisi.

    Public Sub ButtonClick(ByVal control As Office.IRibbonControl)
        If control.Id = "BoldButton" Then 
            If Globals.ThisDocument.selectedBookmark.Bold = _
                Globals.ThisDocument.WordTrue Then
                Globals.ThisDocument.selectedBookmark.Bold = _
                    Globals.ThisDocument.WordFalse
            Else
                Globals.ThisDocument.selectedBookmark.Bold = _
                    Globals.ThisDocument.WordTrue
            End If 
        ElseIf control.Id = "ItalicButton" Then 
            If Globals.ThisDocument.selectedBookmark.Italic = _
                Globals.ThisDocument.WordTrue Then
                Globals.ThisDocument.selectedBookmark.Italic = _
                    Globals.ThisDocument.WordFalse
            Else
                Globals.ThisDocument.selectedBookmark.Italic = _
                    Globals.ThisDocument.WordTrue
            End If 
        End If 
    End Sub
    
    public void ButtonClick(Office.IRibbonControl control)
    {
        if (control.Id == "BoldButton")
        {
            if (Globals.ThisDocument.selectedBookmark.Bold == 
                Globals.ThisDocument.WordTrue)
            {
                Globals.ThisDocument.selectedBookmark.Bold = 
                    Globals.ThisDocument.WordFalse;
            }
            else
            {
                Globals.ThisDocument.selectedBookmark.Bold = 
                    Globals.ThisDocument.WordTrue;
            }
        }
        else if (control.Id == "ItalicButton")
        {
            if (Globals.ThisDocument.selectedBookmark.Italic == 
                Globals.ThisDocument.WordTrue)
            {
                Globals.ThisDocument.selectedBookmark.Italic = 
                    Globals.ThisDocument.WordFalse;
            }
            else
            {
                Globals.ThisDocument.selectedBookmark.Italic = 
                    Globals.ThisDocument.WordTrue;
            }
        }
    
    }
    
  2. Çözüm Gezgini, select ThisDocument.vb veya ThisDocument.vb.

  3. Menü çubuğunda, seçim Görünüm, kod.

    ThisDocument sınıf dosyası Kod Düzenleyicisi'nde açılır.

  4. Aşağıdaki kodu ekleyin ThisDocument sınıf.

    Private Sub Bookmark_BeforeRightClick(ByVal sender As Object, ByVal e _
    As Microsoft.Office.Tools.Word.ClickEventArgs) _
    Handles Bookmark1.BeforeRightClick, Bookmark2.BeforeRightClick
        Dim startPosition As Integer = 0
        Dim i As Integer 
    
        ' If bookmarks overlap, get bookmark closest to cursor. 
        For i = 1 To e.Selection.Bookmarks.Count
            If e.Selection.Bookmarks(i).Start > startPosition Then
                startPosition = e.Selection.Bookmarks(i).Start
            End If 
        Next 
    
        ' If closest bookmark is the sender, show the shortcut menu options. 
        If DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark).Start = _
            startPosition Then
            selectedBookmark = DirectCast(sender, Microsoft.Office.Tools.Word.Bookmark)
    
            ShowBoldButton = True
            ShowItalicButton = True 
    
        End If 
    
    End Sub
    
    void bookmark_BeforeRightClick(object sender, ClickEventArgs e)
            {
                int startPosition = 0;
    
                // If bookmarks overlap, get bookmark closest to cursor. 
                for (int i = 1; i <= e.Selection.Bookmarks.Count; i++)
                {
                    if (e.Selection.Bookmarks[i].Start > startPosition)
                    {
                        startPosition = e.Selection.Bookmarks[i].Start;
                    }
                }
    
                // If closest bookmark is the sender, show shortcut menu options. 
                if (((Microsoft.Office.Tools.Word.Bookmark)sender).Start == startPosition)
                {
                    selectedBookmark = (Microsoft.Office.Tools.Word.Bookmark)sender;
    
                    showBoldButton = true;
                    showItalicButton = true;
    
                }
    
            }
    

    [!NOT]

    Yer işaretlerinin çakıştığı durumlarla başa çıkmak için kod yazmalısınız.Eğer yazmazsanız, varsayılan olarak kod, bölümdeki tüm yer işaretleri için çağrılır.

  5. C#'ta, yer işareti denetimleri için Startup olayına olay işleyicileri eklemelisiniz.Olay işleyicisi oluşturma hakkında daha fazla bilgi için, bkz. Nasıl Yapılır: Office Projelerinde Olay İşleyicileri Oluşturma.

    private void ThisDocument_Startup(object sender, System.EventArgs e)
    {
        this.bookmark1.BeforeRightClick += new ClickEventHandler(bookmark_BeforeRightClick);
        this.bookmark2.BeforeRightClick += new ClickEventHandler(bookmark_BeforeRightClick);
    }
    

Uygulamayı Test Etme

Yer işaretindeki metni sağ tıklattığınızda kısayol menüsünde kalın ve italik menü öğeleri görüntülenir ve metnin düzgünce biçimlendirildiğini doğrulamak için belgenizi sınayın.

Belgenizi test etmek için

  1. F5 tuşuna basarak projeyi çalıştırın.

  2. İlk yer işaretini sağ tıklatın ve sonra Kalın'ı tıklatın.

  3. bookmark1 içindeki tüm metnin kalın olarak biçimlendirildiğini doğrulayın.

  4. Yer işaretlerinin çakıştığı metni sağ tıklatın ve İtalik'i tıklatın.

  5. bookmark2 içindeki tüm metnin italik olduğunu ve bookmark2 ile çakışan bookmark1 içindeki metnin sadece bir kısmının italik olduğunu doğrulayın.

Sonraki Adımlar

Sonradan gelebilecek bazı görevler:

Ayrıca bkz.

Kavramlar

Word Kullanımında İzlenecek Yollar

Genişletilmiş Nesneleri Kullanarak Word'ü Otomatikleştirme

Yer İşareti Denetimi

Office Çözümlerinde İsteğe Bağlı Parametreler

Diğer Kaynaklar

Office Kullanıcı Arabirimini Özelleştirme