Udostępnij za pośrednictwem


Metoda IVsQueryEditQuerySave2.QueryEditFiles — (UInt32, Int32, String[], UInt32[], VSQEQS_FILE_ATTRIBUTE_DATA , UInt32, UInt32)

 

Wywoływana, gdy plik ma być edytowany.

Przestrzeń nazw:   Microsoft.VisualStudio.Shell.Interop
Zestaw:  Microsoft.VisualStudio.Shell.Interop (w Microsoft.VisualStudio.Shell.Interop.dll)

Składnia

int QueryEditFiles(
    uint rgfQueryEdit,
    int cFiles,
    string[] rgpszMkDocuments,
    uint[] rgrgf,
    VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo,
    out uint pfEditVerdict,
    out uint prgfMoreInfo
)
int QueryEditFiles(
    unsigned int rgfQueryEdit,
    int cFiles,
    array<String^>^ rgpszMkDocuments,
    array<unsigned int>^ rgrgf,
    array<VSQEQS_FILE_ATTRIBUTE_DATA>^ rgFileInfo,
    [OutAttribute] unsigned int% pfEditVerdict,
    [OutAttribute] unsigned int% prgfMoreInfo
)
abstract QueryEditFiles : 
        rgfQueryEdit:uint32 *
        cFiles:int *
        rgpszMkDocuments:string[] *
        rgrgf:uint32[] *
        rgFileInfo:VSQEQS_FILE_ATTRIBUTE_DATA[] *
        pfEditVerdict:uint32 byref *
        prgfMoreInfo:uint32 byref -> int
Function QueryEditFiles (
    rgfQueryEdit As UInteger,
    cFiles As Integer,
    rgpszMkDocuments As String(),
    rgrgf As UInteger(),
    rgFileInfo As VSQEQS_FILE_ATTRIBUTE_DATA(),
    <OutAttribute> ByRef pfEditVerdict As UInteger,
    <OutAttribute> ByRef prgfMoreInfo As UInteger
) As Integer

Parametry

  • rgpszMkDocuments
    Type: System.String[]

    [in] Plik do przetworzenia. To jest taki sam rozmiar jak cFiles. Nie jest prawidłowy dla cFiles 0.

  • rgrgf
    Type: System.UInt32[]

    [in] Tablicę wartości flagi pobranych z tagVSQEQSFlags wyliczenia.NULL oznacza to, że są one wszystkich 0.

Wartość zwracana

Type: System.Int32

Jeśli metoda zakończy się pomyślnie, zwraca S_OK. Jeśli nie, zwraca kod błędu.

Wartość zwracana w pfEditCanceled wskazuje, czy jest OK do edycji pliku, aby kontynuować.

Parametr prgfMoreInfo zwraca następujące wyniki:

  • Czy wszystkie pliki są wyewidencjonowane

  • Czy zmienić wszystkie pliki w realizacji transakcji

  • Czy wszystkie pliki są edytowane w pamięci

  • Czy w pamięci Edycja jest niedozwolona.

  • Czy jest wymagane wyewidencjonowanie hałas (w trybie dyskretnym tylko)

  • Czy wyewidencjonowanie została anulowana lub nie powiodła się

Uwagi

Podpis COM

Z ivsqueryeditquerysave2.idl

HRESULT QueryEditFiles(
   [in] VSQueryEditFlags rgfQueryEdit,
   [in] int cFiles,
   [in, size_is(cFiles)] const LPCOLESTR rgpszMkDocuments[],
   [in, size_is(cFiles)] const VSQEQSFlags rgrgf[],
   [in, size_is(cFiles)] const VSQEQS_FILE_ATTRIBUTE_DATA rgFileInfo[],
   [out] VSQueryEditResult *pfEditVerdict,
   [out] VSQueryEditResultFlags *prgfMoreInfo
);

Edytory zdefiniowany jako wszystko, co można zmienić zawartość pliku projektu, należy wywołać tę metodę przed pierwszym Edycja w dokumencie, który jeszcze nie zostało zmienione. Wszystko, co umożliwia edytowanie zawartości pliku rozwiązania (.sln) może wywołać QueryEditSolutionFile, która będzie wywołać tę metodę.

  • Jeśli plik nie jest tylko do odczytu i nie pod kontrolą źródła, QER_EditOK jest zwracana.

  • Jeśli plik jest tylko do odczytu, jeśli nie jest pod kontrolą źródła i rgfQueryEdit nie zawiera QEF_AllowInMemoryEdits (lub w oknie dialogowym Opcje jest ustawiona na nie zezwalaj na edytowanie plików tylko do odczytu), następnie QER_NoEdit_UserCanceled jest w trybie cichym zwracane i edycja nie powinny być zatwierdzone do danych dokumentu w pamięci. Jeśli środowisko jest w trybie hałas, monituje użytkownika, że edycja została anulowana.

  • Jeśli plik jest tylko do odczytu, jeśli nie jest pod kontrolą źródła i rgfQueryEdit obejmuje QEF_AllowInMemoryEdits (lub w oknie dialogowym Opcje jest dozwolona w pamięci), następnie QER_EditOK jest w trybie cichym zwracany.

  • Jeśli plik jest tylko do odczytu, a w opcji kontroli źródła, użytkownik będzie mieć wybór czy chcesz wyewidencjonować plik. Jeśli plik został wyewidencjonowany, QER_EditOK jest zwracany; w przeciwnym razie QER_NoEdit_UserCanceled jest zwracana. Ta sprawa jest nieco bardziej skomplikowane środowiska nie obsługuje "wersja lokalna wyewidencjonowanie" opcja (i biorąc pod uwagę reloadability), jeśli użytkownik ma już najnowszą wersję pliku, a edytowanie w pamięci jest dozwolone (czyli QEF_AllowInMemoryEdits). W większości przypadków, zmiany w pamięci zaewidencjonowanych plików nie są możliwe.

Edytory, Reloadability i realizacji transakcji

Gdy zostanie wywołana QueryEditFiles, zawsze jest możliwym plik wyewidencjonowany, co z kolei może zmienić zawartość pliku w pamięci i na dysku.

Ze względu na potencjalne zmienionych zawartości, należy wywołać wszystkie pakiety VSPackages zmiany wprowadzone w pliku QueryEditFiles przy pierwszej próbie do zmiany zawartości pliku, zanim rzeczywiście zostały wprowadzone zmiany w pliku. Jeśli nie wywołuje VSPackage QueryEditFiles pierwszy, a wprowadzone zmiany w pliku w pamięci, te zmiany w pamięci, mogą zostać utracone w wyniku wyewidencjonowaniu pliku. To uznane za błąd w VSPackage.

Informacje dotyczące tego, czy plik został zmieniony, jest zwracany w *prgfMoreInfo zwracają wartość za pośrednictwem QER_Reloaded lub QER_Changed flagi.

System_CAPS_importantWażne

QER_Changed jest zwracany tylko wtedy, gdy QEF_DetectAnyChangedFile jest przekazywany flagi rgfQueryEdit argument QueryEditFiles wywołań.

Jeśli plik znajduje się w tabeli dokumenty uruchomiona i QueryEditFiles Określa, że załadowania będzie wymagane, spróbuje ponownie załaduj zawartość pliku. Jeśli nie można go ponownie załadować dane, wyświetla okno komunikatu firmowych użytkownika, aby ręcznie zamknąć i ponownie otworzyć dokument. W przypadku wdrażania niestandardowy edytor, zobacz IVsPersistDocData dla informacji na temat obsługi ponownie ładuje z dokumentami.

Pliki projektu

Do każdego projektu, aby wywołać QueryEditFiles podczas zmiany jest około wprowadzane informacje, które jest zachowywany w pliku projektu oraz wywołanie QuerySaveFile lub QuerySaveFiles przed zapisaniem w pliku projektu.

Zobacz też

Interfejs IVsQueryEditQuerySave2
Przestrzeń nazw Microsoft.VisualStudio.Shell.Interop

Powrót do początku