2017-05-13 43 views
-1

我試圖在富文本框(條目)中實現放大/縮小功能。我嘗試將縮放增量設置爲'1',但它太大,使得文本在3-4次點擊之內增長到一個巨大的大小。現在,我正在嘗試設置增量值「0.5」,增加變焦的精度,但它散發出以下錯誤:將富文本框的ZoomFactor增加十進制值

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

我的代碼:

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

我敢肯定有一個簡單的解決這個問題,但我一直在過去的半個小時,這個錯誤難住,找不到任何答案。

+2

使用'0.5f'而不是'0.5'等等。 –

回答

2

你得到的消息,因爲顯然entry.ZoomFactor是一個浮動和0.5是一個雙。

警告消息告訴你沒有隱式轉換,但有明確的轉換。

這是什麼意思,編譯器不會將您的隱含/自動轉換爲浮點數爲0.5。但是,可以投的0.5至浮子這樣的:

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

在現實中,當雙和浮子一起操作,所述浮子被自動轉換爲一個雙,而不是相反。實際上,entry.ZoomFactor + 0.5的結果是double。所以,下面的演員還可能會工作:

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

更重要的是,你可以避開投作爲評論者的一個表現,只是通過調用它0.5F使0.5自然是單精度浮點數。

entry.ZoomFactor = entry.ZoomFactor + 0.5f; 

最後,由於entry.ZoomFactor是一個有效的l值,所以可以使用+ =運算符。

entry.ZoomFactor += 0.5f;