2017-05-13 1 views
-1

Ich versuche eine Zoom-In/Out-Funktion in ein Rich-Text-Feld (Eintrag) zu implementieren. Ich habe versucht, die Zoom-Erhöhung um "1" zu machen, aber es ist zu groß und lässt den Text innerhalb von 3-4 Klicks zu einer massiven Größe wachsen. Jetzt versuche ich, den inkrementellen Wert auf ‚0.5‘ einstellen Zoom Präzision zu erhöhen, aber es gibt die folgende Fehlermeldung aus:ZoomFactor eines Rich-Text-Felds um einen Dezimalwert vergrößern

CS0266 - Cannot implicitly convert type 'double' to 'float'. An explicit conversion exists (are you missing a cast?)

Mein Code:

private void ts_ZoomIn_Click(object sender, EventArgs e) 
    { 
     if (entry.ZoomFactor < 64.5) 
     { 
      entry.ZoomFactor = entry.ZoomFactor + 0.5; 
     } 
    } 

    private void ts_ZoomOut_Click(object sender, EventArgs e) 
    { 
     if (entry.ZoomFactor > 0.515625) 
     { 
      entry.ZoomFactor = entry.ZoomFactor + -0.5; 
     } 
    } 

Ich bin sicher, es ist ein einfache Lösung dafür, aber ich bin mit diesem Fehler für die letzte halbe Stunde ratlos und kann keine Antworten finden.

+2

Verwenden Sie '0.5f' anstelle von' 0.5' und so weiter. –

Antwort

2

Sie erhalten die Nachricht, weil offensichtlich entry.ZoomFactor ist ein float und 0.5 ist ein Doppel.

Die Warnmeldung sagt Ihnen, dass es keine implizite Umwandlung gibt, aber eine explizite Umwandlung.

Was dies bedeutet, ist, dass der Compiler nicht 0.5 in einen Float für Sie implicity/automatisch konvertieren wird. Sie können jedoch die 0,5 bis einen Schwimmer wie diese Stimmen:

entry.ZoomFactor = entry.ZoomFactor + (float) 0.5; 

In Wirklichkeit, wenn die Doppel und Schwimmer zusammen betrieben werden, ist der Schwimmer automatisch zu einem Doppel umgewandelt, aber nicht umgekehrt. In Wirklichkeit ist das Ergebnis von entry.ZoomFactor + 0,5 ein Doppel. So würde die folgende Besetzung auch wahrscheinlich funktionieren:

entry.ZoomFactor = (float)(entry.ZoomFactor+ 0.5); 

Noch besser wäre es, können Sie die Besetzung als eines der commen vermeiden zeigte und nur die 0,5 natürlich eine einzige Präzision Schwimmer machen, indem es 0,5f aufrufen.

entry.ZoomFactor = entry.ZoomFactor + 0.5f; 

Da schließlich entry.ZoomFactor ein gültiger l-Wert ist, können Sie wahrscheinlich den Operator + = verwenden.

entry.ZoomFactor += 0.5f; 
Verwandte Themen