[英]Connection UI.Dialog for c# setup project
我將Microsoft.Data.ConnectionUI.Dialog.dll和Microsoft.Data.ConnectionUI.dll dll添加到我的項目中,並使用以下代碼:
Microsoft.Data.ConnectionUI.DataConnectionDialog dcd = new Microsoft.Data.ConnectionUI.DataConnectionDialog();
Microsoft.Data.ConnectionUI.DataSource.AddStandardDataSources(dcd);
if (Microsoft.Data.ConnectionUI.DataConnectionDialog.Show(dcd) == System.Windows.Forms.DialogResult.OK)
{
//
}
else
{
//
}
當我在普通的Windows應用程序中使用它時,一切似乎都沒問題(顯示帶有“高級”按鈕的標准VS數據連接對話框)。 當我在SETUP PROJECT中使用它時,它只顯示高級對話框並且禁用了OK按鈕。 用戶可以測試連接,但無法按OK按鈕。
有誰知道為什么這不起作用?
根據設置啟用/禁用按鈕。
在本文中: http : //erikej.blogspot.com.au/2010/04/using-adonet-data-connection-dialog-in.html作者“硬編碼”數據源,這相應地禁用了“更改”按鈕。
設置DataSource名稱時,應啟用“確定”按鈕。 我挖出了Data Connection Dialog Source Code
代碼向您展示: http : //archive.msdn.microsoft.com/Connection/Release/ProjectReleases.aspx?ReleaseId = 3863
在Micrsost.Data.ConnectionUI.Dialog項目中,打開DataConnectionDialog.cs類,您可以看到這是事件:
private void ConfigureAcceptButton(object sender, EventArgs e)
{
try
{
acceptButton.Enabled = (ConnectionProperties != null) ? ConnectionProperties.IsComplete : false;
}
catch
{
acceptButton.Enabled = true;
}
}
上面的事件與ConnectionProperties方法掛鈎,每次PropertyChange事件觸發時都會調用:
properties.PropertyChanged += new EventHandler(ConfigureAcceptButton);
要啟用“確定”按鈕,您需要滿足ConnectionProperties.IsComplete條件。
當我從PowerPoint插件運行DataConnectionDialog時遇到了同樣的問題。
問題是SqlConnectionUIControl必須在STA線程中運行。 這是我工作的代碼。
單擊“加載”按鈕,在線程中啟動數據連接器。
private void dataSourceSelectionButton_Click(object sender, EventArgs e)
{
Thread browseThread = new Thread(promptForConnectionString);
browseThread.TrySetApartmentState(ApartmentState.STA);
browseThread.Start();
}
打開對話框。
public string ConnectionString { get; set; }
private void promptForDataConnection()
{
DataConnectionDialog dataConnection = new DataConnectionDialog();
DataConnectionConfiguration connectionConfiguration = new DataConnectionConfiguration(null);
connectionConfiguration.LoadConfiguration(dataConnection);
if (DataConnectionDialog.Show(dataConnection) == DialogResult.OK)
{
connectionConfiguration.SaveConfiguration(dataConnection);
this.ConnectionString = dataConnection.ConnectionString;
}
}
如果這沒有幫助,可能會選擇DataConnectionDialog Source 。
我無法通過運行VS2008作為管理員來解決此問題。 我通過在Winform項目中禁用“啟用Visual Studio主機進程”選項來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.