簡體   English   中英

用於c#安裝項目的連接UI.Dialog

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM