在我的Visual Studio擴展中,我將讀取導航欄中的文本。因此,我聽窗口創建的事件,並從IVsCodeWindow對象,我得到IVsDropdownBar獲取下拉欄中的當前選擇。這工作正常。然後,我使用以下代碼片段來提取當前選擇的文本:IVsDropdownBarClient和GetEntryText:文本緩衝區問題
string text;
barClient.GetEntryText(MembersDropdown, curSelection, out text);
if (hr == VSConstants.S_OK)
{
Debug.WriteLine("Text: " + text);
} else {
Debug.WriteLine("No text found!");
}
但是,這不起作用。我的擴展程序在代碼片段的第二行中發生了未處理的異常。我閱讀文檔,並能找到下面的註釋:
在ppszText返回的文本緩衝區通常由 IVsDropdownBarClient對象創建和緩衝區必須堅持的IVsDropdownBarClient對象的生命 。如果您在託管代碼中實現此接口,並且您需要調用者將字符串丟棄到 ,請在 IVsDropdownBarClient接口上實現IVsCoTaskMemFreeMyStrings接口。
我認爲這是我的問題的一部分,但我不能真正理解我必須在我的代碼中更改以使其工作。任何提示?