Udostępnij za pośrednictwem


Tworzenie strony opcji

Ten przewodnik tworzy prostą stronę Narzędzia/Opcje, która używa siatki właściwości do sprawdzania i ustawiania właściwości.

Aby zapisać te właściwości i przywrócić je z pliku ustawień, wykonaj następujące kroki, a następnie zobacz Tworzenie kategorii ustawień.

Program MPF udostępnia dwie klasy ułatwiające tworzenie stron Opcje narzędzi, klasę Package i klasę DialogPage . Pakiet VSPackage tworzy się w celu udostępnienia kontenera dla tych stron przez podklasę Package klasy. Każdą stronę opcji narzędzi można utworzyć, wyprowadzając z DialogPage klasy .

Strona siatki Tworzenie opcji narzędzi

W tej sekcji utworzysz prostą siatkę właściwości Narzędzia Opcje. Ta siatka służy do wyświetlania i zmieniania wartości właściwości.

Aby utworzyć projekt VSIX i dodać pakiet VSPackage

  1. Każde rozszerzenie programu Visual Studio rozpoczyna się od projektu wdrażania VSIX, który będzie zawierać zasoby rozszerzenia. Utwórz projekt VSIX programu Visual Studio o nazwie MyToolsOptionsExtension. Szablon projektu VSIX można znaleźć w oknie dialogowym Nowy projekt , wyszukując frazę "vsix".

  2. Dodaj pakiet VSPackage, dodając szablon elementu pakietu programu Visual Studio o nazwie MyToolsOptionsPackage. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł projektu i wybierz polecenie Dodaj>nowy element. W oknie dialogowym Dodawanie nowego elementu przejdź do pozycji Rozszerzalność elementów>visual C#, a następnie wybierz pozycję Pakiet programu Visual Studio. W polu Nazwa w dolnej części okna dialogowego zmień nazwę pliku na MyToolsOptionsPackage.cs. Aby uzyskać więcej informacji na temat tworzenia pakietu VSPackage, zobacz Create an extension with a VSPackage (Tworzenie rozszerzenia za pomocą pakietu VSPackage).

Aby utworzyć siatkę właściwości Narzędzia Opcje

  1. Otwórz plik MyToolsOptionsPackage w edytorze kodu.

  2. Dodaj następującą instrukcję using.

    using System.ComponentModel;
    
  3. Zadeklaruj klasę OptionPageGrid i utwórz ją z DialogPageklasy .

    public class OptionPageGrid : DialogPage
    {  }
    
  4. Zastosuj element ProvideOptionPageAttribute do klasy, VSPackage aby przypisać do klasy kategorię opcji i nazwę strony opcji dla opcjiGrid. Wynik powinien wyglądać następująco:

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    [ProvideOptionPage(typeof(OptionPageGrid),
        "My Category", "My Grid Page", 0, 0, true)]
    public sealed class MyToolsOptionsPackage : Package
    
  5. OptionInteger Dodaj właściwość do OptionPageGrid klasy.

    public class OptionPageGrid : DialogPage
    {
        private int optionInt = 256;
    
        [Category("My Category")]
        [DisplayName("My Integer Option")]
        [Description("My integer option")]
        public int OptionInteger
        {
            get { return optionInt; }
            set { optionInt = value; }
        }
    }
    

    Uwaga

    Domyślna implementacja DialogPage programu obsługuje właściwości, które mają odpowiednie konwertery lub są strukturami lub tablicami, które można rozszerzyć na właściwości, które mają odpowiednie konwertery. Aby uzyskać listę konwerterów, zobacz System.ComponentModel przestrzeń nazw.

  6. Skompiluj projekt i rozpocznij debugowanie.

  7. W eksperymentalnym wystąpieniu programu Visual Studio w menu Narzędzia kliknij pozycję Opcje.

    W okienku po lewej stronie powinna zostać wyświetlona pozycja Moja kategoria. (Kategorie opcji są wymienione w kolejności alfabetycznej, więc powinno się pojawić w połowie listy). Otwórz pozycję Moja kategoria , a następnie kliknij pozycję Moja strona siatki. Siatka opcji zostanie wyświetlona w okienku po prawej stronie. Kategoria właściwości to Moje opcje, a nazwa właściwości to Moja liczba całkowita. Opis właściwości, opcja Moja liczba całkowita, jest wyświetlana w dolnej części okienka. Zmień wartość z początkowej wartości 256 na inną. Kliknij przycisk OK, a następnie otwórz ponownie moją stronę siatki. Widać, że nowa wartość będzie się powtarzać.

    Strona opcji jest również dostępna za pośrednictwem pola wyszukiwania programu Visual Studio. W polu wyszukiwania w górnej części środowiska IDE wpisz My Category (Moja kategoria ), a w wynikach zostanie wyświetlona strona Moja kategoria —> Moja siatka .

Tworzenie strony niestandardowej Opcje narzędzi

W tej sekcji utworzysz stronę Opcje narzędzi z niestandardowym interfejsem użytkownika. Ta strona służy do wyświetlania i zmieniania wartości właściwości.

  1. Otwórz plik MyToolsOptionsPackage w edytorze kodu.

  2. Dodaj następującą instrukcję using.

    using System.Windows.Forms;
    
  3. Dodaj klasę OptionPageCustom tuż przed klasą OptionPageGrid . Utwórz nową klasę na podstawie DialogPageklasy .

    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  4. Dodaj atrybut GUID. Dodaj właściwość OptionString:

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    }
    
  5. Zastosuj sekundę ProvideOptionPageAttribute do klasy VSPackage. Ten atrybut przypisuje klasie kategorię opcji i nazwę strony opcji.

    [PackageRegistration(UseManagedResourcesOnly = true)]
    [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)]
    [ProvideMenuResource("Menus.ctmenu", 1)]
    [Guid(GuidList.guidMyToolsOptionsPkgString)]
    [ProvideOptionPage(typeof(OptionPageGrid),
        "My Category", "My Grid Page", 0, 0, true)]
    [ProvideOptionPage(typeof(OptionPageCustom),
        "My Category", "My Custom Page", 0, 0, true)]
    public sealed class MyToolsOptionsPackage : Package
    
  6. Dodaj nową kontrolkę użytkownika o nazwie MyUserControl do projektu.

  7. Dodaj kontrolkę TextBox do kontrolki użytkownika.

    W oknie Właściwości na pasku narzędzi kliknij przycisk Zdarzenia, a następnie kliknij dwukrotnie zdarzenie Leave. Nowa procedura obsługi zdarzeń jest wyświetlana w kodzie MyUserControl.cs .

  8. Dodaj pole publiczne OptionsPage , metodę Initialize do klasy kontrolnej i zaktualizuj program obsługi zdarzeń, aby ustawić wartość opcji na zawartość pola tekstowego:

    public partial class MyUserControl : UserControl
    {
        public MyUserControl()
        {
            InitializeComponent();
        }
    
        internal OptionPageCustom optionsPage;
    
        public void Initialize()
        {
            textBox1.Text = optionsPage.OptionString;
        }
    
        private void textBox1_Leave(object sender, EventArgs e)
        {
            optionsPage.OptionString = textBox1.Text;
        }
    }
    

    Pole optionsPage zawiera odwołanie do wystąpienia nadrzędnego OptionPageCustom . Metoda jest wyświetlana InitializeOptionString w polu tekstowym. Program obsługi zdarzeń zapisuje bieżącą wartość kontrolki TextBox , OptionString gdy fokus opuszcza pole tekstowe.

  9. W pliku kodu pakietu dodaj zastąpienie właściwości OptionPageCustom.Window do OptionPageCustom klasy w celu utworzenia, zainicjowania i zwrócenia wystąpienia klasy MyUserControl. Klasa powinna teraz wyglądać następująco:

    [Guid("00000000-0000-0000-0000-000000000000")]
    public class OptionPageCustom : DialogPage
    {
        private string optionValue = "alpha";
    
        public string OptionString
        {
            get { return optionValue; }
            set { optionValue = value; }
        }
    
        protected override IWin32Window Window
        {
            get
            {
                MyUserControl page = new MyUserControl();
                page.optionsPage = this;
                page.Initialize();
                return page;
            }
        }
    }
    
  10. Skompiluj i uruchom projekt.

  11. W wystąpieniu eksperymentalnym kliknij pozycję Narzędzia>Opcje.

  12. Znajdź moją kategorię, a następnie pozycję Moja strona niestandardowa.

  13. Zmień wartość opcjiString. Kliknij przycisk OK, a następnie otwórz ponownie moją stronę niestandardową. Widać, że nowa wartość została utrwalone.

Opcje dostępu

W tej sekcji uzyskasz wartość opcji z pakietu VSPackage, który hostuje skojarzona strona Opcje narzędzi. Tej samej techniki można użyć do uzyskania wartości dowolnej właściwości publicznej.

  1. W pliku kodu pakietu dodaj właściwość publiczną o nazwie OptionInteger do klasy MyToolsOptionsPackage .

    public int OptionInteger
    {
        get
        {
            OptionPageGrid page = (OptionPageGrid)GetDialogPage(typeof(OptionPageGrid));
            return page.OptionInteger;
        }
    }
    
    

    Ten kod wywołuje metodę GetDialogPage tworzenia lub pobierania OptionPageGrid wystąpienia. OptionPageGrid wywołania LoadSettingsFromStorage w celu załadowania jego opcji, które są właściwościami publicznymi.

  2. Teraz dodaj niestandardowy szablon elementu polecenia o nazwie MyToolsOptionsCommand , aby wyświetlić wartość. W oknie dialogowym Dodawanie nowego elementu przejdź do pozycji Visual C#>Rozszerzalność i wybierz pozycję Polecenie niestandardowe. W polu Nazwa w dolnej części okna zmień nazwę pliku polecenia na MyToolsOptionsCommand.cs.

  3. W pliku MyToolsOptionsCommand zastąp treść metody polecenia ShowMessageBox następującym kodem:

    private void ShowMessageBox(object sender, EventArgs e)
    {
        MyToolsOptionsPackage myToolsOptionsPackage = this.package as MyToolsOptionsPackage;
        System.Windows.Forms.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, "OptionInteger: {0}", myToolsOptionsPackage.OptionInteger));
    }
    
    
  4. Skompiluj projekt i rozpocznij debugowanie.

  5. W wystąpieniu eksperymentalnym w menu Narzędzia kliknij pozycję Wywołaj myToolsOptionsCommand.

    W polu komunikatu jest wyświetlana bieżąca wartość OptionInteger.

Otwórz stronę opcji

W tej sekcji dodasz polecenie i zdarzenie dla przycisku, aby otworzyć stronę opcji

  1. Najpierw dodaj plik o nazwie OpenPageCommand.cs.

  2. Następnie otwórz plik OpenPageCommand.cs i zmień metodę Execute.

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        Type optionsPageType = typeof(OptionPageCustom);
        Instance.package.ShowOptionPage(optionsPageType);
    }
    
  3. Uruchom projekt, a następnie kliknij przycisk Wywołaj (domyślnie znajduje się w obszarze Narzędzia), a następnie zobaczysz, że strona opcji jest otwarta.

  4. Więcej szczegółów na temat otwierania strony opcji można znaleźć w następujących dokumentach