2017-07-07 1 views
-2

Ich habe zwei dumme Fragen:Kann nicht explizit aufrufen Betreiber oder Accessor und statische

Die erste:

ich das schon gefragt haben, und ich bin wirklich leid, es wieder zu fragen (noch mehr weil es viele Beiträge über sie sind), aber jetzt wirklich verstehe ich nicht, warum das passiert auch wenn ich jeden anderen Beitrag gelesen, hier ist mein Code:

public class PageTitre { 
    ... 
    public void situation(string s) { 
     onglet.get_Range("C11").Value = "(" + s + ")"; 
    } 
} 

public class PPE_Process { 

    public static PageTitre pageTitre; 

    public static void MainProcess() { 
     ... 
     pageTitre = new PageTitre(); 
     ... 
    } 
} 

public partial class PPE_Ribbon { 
    private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e) 
    { 
     PPE_Process.pageTitre.situation(SituationEditBox.Text); 
    } 
} 

ich einige andere Dinge ausprobiert haben, wie Putting Situation als eine Variable von PageTitre und get und set aufweist und

private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e) 
    { 
     PPE_Process.pageTitre.set_situation(SituationEditBox.Text); 
    } 

Oder

private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e) 
    { 
     PPE_Process.pageTitre.situation = SituationEditBox.Text; 
    } 

aber nichts funktionierte, mit dem gleichen Fehler: kann Bediener nicht explizit aufrufen oder Accessor.

Ich vermute, es gibt ein Problem mit der static? Wenn das der Fall ist, hier ist meine zweite Frage:

Zweite ein:

ich viel Dokumentation über sie gelesen, aber ich kann wirklich nicht verstehen, was die Verwendung von „statisch“ ist .. Ist es nur so, dass wir den Wert außerhalb der Klasse oder etwas in der Art nicht ändern können? Würde es dann wirklich etwas ändern, wenn ich alle static in meinem Code ausziehe?

Nochmals, es tut mir leid, dass Sie diese Frage immer wieder beantworten müssen, aber ich verstehe viel besser, wenn das direkt mit meinem Code zusammenhängt, und nicht jemand jemand anderen über irgendeinen anderen Zufallscode antwortet anderes Problem als meins. :/

Bearbeiten, um weitere Informationen hinzufügen:

Es sollte irgendein Problem mit .Value oder .get_Range nicht sein, da sie auf andere Teile des Codes funktioniert, aber Für .Value, hier ist die Information gegeben von Visual Studio:

Leere Range.set_Value ([object RangeValueDataType = System.Type.Missing], [Objektwert = System.Type.Missing])

Für .get_Range: Excel.Range_Worksheet.get_Range (Objekt Cell1, [object Cell2 = System.Type.Missing])

Für static, ich verstehe immer noch nicht wirklich all diese "Instanzen" Dinge, aber ich werde versuche mehr zu sehen, und füge eine weitere Frage in dieses Forum ein, wenn ich danach immer noch nicht verstehe.

+1

Wenn Sie zwei Fragen haben, dann fragen Sie sie bitte separat. – dymanoid

+0

Es kann von "onglet.get_Range (" C11 ") kommen. Wert" können Sie die Details zu diesem aktualisieren? Der Fehler sieht aus wie Wert ist eine Methode, aber schwer ohne Details zu sagen, wenn Value eine Methode ist, sollte es mit .Value() calle sein – GaelSa

Antwort

0

Um Ihre erste Frage: Ich sehe kein Problem mit dem Aufruf der Methode situation, vielleicht ist das Problem die Aussage innerhalb das Verfahren (get_Range("C11"))?

Zu Ihrer zweiten Frage: Wenn Sie eine Variable/Eigenschaft/Methode machen static bedeutet es, dass es unabhängig von einer Instanz (Objekt) der Klasse ist. Andernfalls können Sie nicht auf die Eigenschaft PPE_Process.pageTitre ohne eine Instanz von PPE_Process zugreifen.

-1

Alrighty, änderte ich nichts in meinem Code, aber jetzt funktioniert es mit

private void SituationEditBox_TextChanged(object sender, RibbonControlEventArgs e) 
{ 
    PPE_Process.pageTitre.situation = SituationEditBox.Text; 
} 

Also ... ich weiß es nicht, es war vielleicht ein Problem mit dem Aufbau meiner Lösung, aber das ist ziemlich glücklich :)

Verwandte Themen