2012-05-02 12 views
5

enter image description hereconexión UI.Dialog para C# proyecto de instalación

agrego Microsoft.Data.ConnectionUI.Dialog.dll y Microsoft.Data.ConnectionUI.dll dlls a mi proyecto, y utilizar este código:

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 
     { 
      // 
     } 

Cuando uso esto en las aplicaciones de Windows normales, todo parece estar bien (muestra el diálogo de conexión de datos VS estándar con el botón Avanzado). Cuando lo uso en SETUP PROJECT, muestra solo el diálogo avanzado Y el botón OK está desactivado. Los usuarios pueden probar la conexión pero no pueden presionar el botón OK.

¿Alguien sabe por qué esto no funciona?

+0

¿Ha intentado ejecutar el proyecto de instalación con derechos de administrador? Si ejecuta desde VS, cierre VS e inícielo como administrador. – Jethro

+0

VS se ejecutó como administrador, y simplemente intenté configurarlo como administrador, y NINGUNA diferencia :( –

+0

¿Qué versión del ensamblado ConnectionUI.dll está usando, y está haciendo referencia al mismo ensamblaje desde su configuración y proyectos de Windows? – Phil

Respuesta

2

Los botones se activan/desactivan dependiendo de la configuración.

En este artículo: http://erikej.blogspot.com.au/2010/04/using-adonet-data-connection-dialog-in.html el autor "codifica" la fuente de datos y, consecuentemente, desactiva el botón "Cambiar".

Cuando establece el nombre de DataSource, se debe habilitar el botón Aceptar. Desenterré el código Data Connection Dialog Source Code para mostrarle: http://archive.msdn.microsoft.com/Connection/Release/ProjectReleases.aspx?ReleaseId=3863

En el proyecto Micrsost.Data.ConnectionUI.Dialog, abra la clase DataConnectionDialog.cs y se puede ver que este es el caso:

private void ConfigureAcceptButton(object sender, EventArgs e) 
{ 
try 
{ 
acceptButton.Enabled = (ConnectionProperties != null) ? ConnectionProperties.IsComplete : false; 
} 
catch 
{ 
acceptButton.Enabled = true; 
} 
} 

El Estas ceremonias se conectó a partir del método ConnectionProperties y se invoca cada vez que se activa el evento PropertyChange:

properties.PropertyChanged += new EventHandler(ConfigureAcceptButton); 

para obtener el botón OK habilitado tendrá que satisfacer la ConnectionProperties.IsCom condición completa

1

Me encontré con el mismo problema que cuando ejecuté DataConnectionDialog desde un complemento de PowerPoint.

El problema es que SqlConnectionUIControl debe ejecutarse en un hilo STA. Aquí está el código que obtuve trabajando.

Se hace clic en el botón Cargar, inicie el conector de datos en una secuencia.

private void dataSourceSelectionButton_Click(object sender, EventArgs e) 
{ 
    Thread browseThread = new Thread(promptForConnectionString); 
    browseThread.TrySetApartmentState(ApartmentState.STA); 
    browseThread.Start(); 
} 

Abrir el cuadro de diálogo.

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; 
    } 
} 

Si esto no ayuda, podría tomar el DataConnectionDialog Source.

0

No puedo resolver este problema ejecutando VS2008 como administrador. Resuelvo este problema deshabilitando la opción "Habilitar el proceso de alojamiento de Visual Studio" en el proyecto de Winform.

Cuestiones relacionadas