2011-08-22 5 views
2

Je travaille sur un addin pour Excel 2010 utilisant C#. J'ai une feuille de calcul existante qui a quelques contrôles dedans, à savoir un ComboBox. J'essaye d'écrire du code qui va placer une certaine valeur dans la propriété texte de la combo, mais j'ai du mal à accéder au contrôle pour le faire.C# excel addin - Accès aux contrôles

La zone de liste déroulante est nommé 'ComboBox1' mais si je tente quelque chose comme ...

var combo = Controls["ComboBox1"]; 

je reçois un ArgumentOutOfRangeException.

Les approches exploratoires pour découvrir ce que je suis censé faire ne fournissent pas vraiment d'informations utiles non plus. Par exemple, si était d'écrire;

MessageBox.Show(Controls[0].GetType()) 

Le message affiché est 'NamedRangeImpl' qui ne semble pas du tout un contrôle. Donc ma question est, comment puis-je accéder aux contrôles qui se trouvent sur ma feuille de calcul à partir de mon code?

+1

L'avez-vous ajouté en tant que contrôle de formulaire ou contrôle ActiveX? Si c'est un contrôle ActiveX, essayez 'ActiveSheet.OLEObjects (" ComboBox1 "). Object.value =" foo "' – Banjoe

+0

Bonne question. Je n'ai pas fait la feuille, mais je vais découvrir ce qui est quoi. –

+0

Vous pourriez essayer quelque chose comme 'foreach (Contrôle c dans les contrôles) MessageBox.Show (c.GetType(). ToString());' et voir ce que la sortie est. –

Répondre

1

Je ne suis pas vraiment sûr du problème mais j'ai fait des addins pour le mot et si c'est comme des fenêtres, cela devrait fonctionner correctement.

foreach (Control c in Controls) 
    if (c.Name == "comboBox1") { 
     ComboBox box = (ComboBox)c; 
     box.Items.Add("Thing added"); 
    } 
Questions connexes