Bonjour,
Aujourd'hui je suis capable de coder un objet activeX en C# par l'intermédiaire d'un userControl C#. Il suffit pour cela d'ajouter quelques lignes que voici dans ma classe héritant de UserControl :
Code :
public partial class MonUserControl : UserControl
{
#region Code interoperabilité activeX - C# à ne pas supprimer
[ComRegisterFunction]
public static void RegisterClass(Type t)
{
string keyName = @"CLSID\" + t.GUID.ToString("B");
using (RegistryKey key =
Registry.ClassesRoot.OpenSubKey(keyName, true))
{
key.CreateSubKey("Control").Close();
using (RegistryKey subkey = key.CreateSubKey("MiscStatus"))
{
subkey.SetValue("", "131457");
}
using (RegistryKey subkey = key.CreateSubKey("TypeLib"))
{
Guid libid = Marshal.GetTypeLibGuidForAssembly(t.Assembly);
subkey.SetValue("", libid.ToString("B"));
}
using (RegistryKey subkey = key.CreateSubKey("Version"))
{
Version ver = t.Assembly.GetName().Version;
string version = string.Format("{0}.{1}", ver.Major, ver.Minor);
if (version == "0.0") version = "1.0";
subkey.SetValue("", version);
}
}
}
[ComUnregisterFunction]
public static void UnregisterClass(Type t)
{
// Delete entire CLSID\{clsid} subtree
string keyName = @"CLSID\" + t.GUID.ToString("B");
Registry.ClassesRoot.DeleteSubKeyTree(keyName);
}
#endregion
/*La je peux commencer à coder comme si je développais un objet UserControl C# basique. */
private int unAttributExemple;
En toute honnêteté, je ne comprends pas réellement la signification de ces lignes, mais cela marche donc jusqu'ici je suis content. Mais j'ai un petit problème. Mon UserControl est sensé s'insérer sur des slides powerpoint et interagir avec l'utilisateur. Le problème est que mes attributs de classe C# (de mon UserControl et des autres classes) se sont pas sauvegardées dans le document (par exemple unAttributExemple dans le code ci-dessus). Du coup je perds toutes mes données quand je réouvre un document ppt sauvegardé avec mes UserControl et il n'y a plus d'intérêt à la chose. Alors peut être avez-vous déjà rencontré ce problème ou avez-vous une idée pour le résoudre.
Personnellement je pense que si je pouvais déclarer des propriétés custom (personalisé quoi) et leur affecter les valeurs de mes attributs, les données seraient sauvegarder.
Sinon j'ai la solution de la sauvegarde dans un XML, mais je pense que c'est moins propre quand même.
Une idée ?
merci