2017-05-13 26 views
-1

リッチテキストボックス(エントリ)にズームイン/アウト機能を実装しようとしています。私はズームインクリメントを '1'で作成しようとしましたが、サイズが大きすぎるため、テキストは3〜4回のクリックで膨大なサイズになります。今、私はズームの精度を高めるために「0.5」に増分値を設定しようとしているが、それは次のエラー放つ:私はそこにあると確信しているリッチテキストボックスのZoomFactorを10進数値で拡大する

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

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

私のコードをこれは単純な修正ですが、私は過去30分間このエラーに悩まされてしまい、何の答えも見つけられません。

+2

「0.5」の代わりに「0.5f」などを使用します。 –

答えて

2

明らかにentry.ZoomFactorが浮動小数点数で0.5が倍数であるため、メッセージが表示されます。

暗黙的なキャストはありませんが、明示的なキャストがあるという警告メッセージが表示されます。

これは、コンパイラが浮動小数点/浮動小数点に自動的に0.5を変換しないことを意味します。しかし、あなたがこのようなフロートに0.5をキャストすることができます実際には

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

、ダブル、フロートは一緒に操作され、フロートが自動的にではなく、その逆、doubleに変換されます。実際には、entry.ZoomFactor + 0.5の結果はダブルです。だから、次のキャストもおそらく動作します:

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

いっそのこと、あなたが示したコメンターの一つとしてキャストを回避することができ、ちょうど0.5F、それを呼び出すことにより、0.5自然単精度浮動小数点を作ります。

最後に、entry.ZoomFactorが有効なl値であるため、おそらく+ =演算子を使用できます。

entry.ZoomFactor += 0.5f;