我發現有些可接受的解決方案,雖然沒有直接對應的設問的verbatium。
一個可能的解決方案,但遺憾的是,由於某種原因,他建議器中刪除,是使用消息過濾器。然而,這導致了人工計算,其中鼠標點擊去,基本上取代翻譯鼠標事件與我自己的一些粗俗的柺杖組合框的下降列表改變所選項目的過程中的WinForms能力的路徑。這是我躲過的路。
在最後,我對「整容」的解決方案解決,並在組合框中顯示的文本的想法是替代用戶的決策對是否取消更改主題的持續時間。
所以,在SelectedIndexChanged事件我已經把follofing代碼:
try
{
if (MyDataSets.Current.HasChanges() && !MyDataSets.Current.Name.Equals(cbChosenDataSet.Value))
{
cbChosenDataSet.DropDownStyle = ComboBoxStyle.DropDown;
cbChosenDataSet.Text = MyDataSets.Current.Name + ' ';
Application.DoEvents();
}
else return;
/*
* UserChoseToCancel is set according to user's choice
*/
if (UserChoseToCancel)
cbChosenDataSet.Value = MyDataSets.Current.Name;
else
MyDataSets.SetCurrent(cbChosenDataSet.Value);
/*
* other things
*/
}
catch(Exception e) {/* handling */}
finally
{
cbChosenDataSet.DropDownStyle = ComboBoxStyle.DropDownList;
}
理念的要點是:根據需要在下拉組合框風格」的文本是可以改變的。但是,如果設置爲列表中的其中一個項目,則會發生選擇更改。爲了避免這種不必要的情況,一個空間被添加到臨時文本中。
在取消的情況下不發生,恢復的樣式爲DropDownList的強制改變爲實際選擇的值(其一直保持不變)的文本。
如果用戶取消了變化,組合框的值設置回舊的。處理程序的開始處的檢查可以停止由該處理程序生成的事件進一步處理。
我列出了我嘗試處理的事件,事實證明這些事件不符合他們的工作。當然,我可以重新列出它們。 – Srv19
當他們在下拉菜單中鍵入/選擇一個項目後,是否希望他們收到一個消息框,詢問他們是否要保存它?我仍然不清楚你想要的東西的順序。 – Taryn
你是對的。這裏最重要的是當消息框顯示時,他們被建議保存的項目仍然顯示。 – Srv19