c#安装项目的连接UI.对话框
我将Microsoft.Data.ConnectionUI.Dialog.dll和Microsoft.Data.ConnectionUI.dll dll dll添加到我的项目中,并使用以下代码:c#安装项目的连接UI.对话框,c#,dialog,connection,C#,Dialog,Connection,我将Microsoft.Data.ConnectionUI.Dialog.dll和Microsoft.Data.ConnectionUI.dll dll dll添加到我的项目中,并使用以下代码: Microsoft.Data.ConnectionUI.DataConnectionDialog dcd = new Microsoft.Data.ConnectionUI.DataConnectionDialog(); Microsoft.Data.ConnectionUI.
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 dataconnection对话框)。当我在安装项目中使用它时,它只显示高级对话框,并且“确定”按钮被禁用。用户可以测试连接,但不能按OK按钮
有人知道这不起作用的原因吗?根据设置启用/禁用按钮。 在本文中:作者对数据源进行“硬编码”,从而禁用“更改”按钮 设置数据源名称时,应启用“确定”按钮。我打开了
数据连接对话框源代码
代码,向您展示:
在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;
}
}
如果这不起作用,那就开始吧。我无法通过以管理员身份运行VS2008来解决这个问题。我通过在Winform项目中禁用“启用Visual Studio宿主进程”选项来解决此问题。您是否尝试过使用管理员权限运行安装项目?如果您在VS中运行,请关闭VS并将其作为Admin启动。VS作为Admin运行,我只是尝试以Admin的身份重新安装,没有区别:(您使用的是哪个版本的ConnectionUI.dll程序集,您是否引用了安装程序和windows项目中的同一程序集?@ArmenKhachatryan您有机会看到我的答案吗?正确填写连接字符串后,“确定”按钮将启用。)。