通过十进制值增加富文本框的ZoomFactor

时间:2017-05-13 13:28:10

标签: c# .net winforms richtextbox

我正在尝试将放大/缩小功能实现到富文本框(条目)中。我已经尝试将缩放增量设为'1',但它太大了,使得文本在3-4次点击内增长到一个巨大的尺寸。现在,我正在尝试将增量值设置为“0.5”以提高缩放精度,但它会发出以下错误:

  

CS0266 - 无法将类型'double'隐式转换为'float'。存在显式转换(您是否错过了演员?)

我的代码:

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

我确信这有一个简单的解决办法,但过去半小时我一直难以接受这个错误,但找不到任何答案。

1 个答案:

答案 0 :(得分:2)

你得到的消息是因为显然是条目.ZoomFactor是一个浮点数而0.5是双重的。

警告消息告诉您没有隐式转换,但有明确的转换。

这意味着,编译器不会为了暗示/自动将0.5转换为浮点数。但是,您可以将0.5转换为浮动,如下所示:

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

实际上,当double和float一起操作时,float会自动转换为double,但反之亦然。实际上,entry.ZoomFactor + 0.5的结果是双倍的。所以,下面的演员也可能有用:

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

更好的是,您可以像其中一个评论者所展示的那样避免演员表,只需将其称为0.5f,就可以将0.5自然地称为单精度浮点数。

entry.ZoomFactor = entry.ZoomFactor + 0.5f;

最后,由于entry.ZoomFactor是一个有效的l值,你可以使用+ =运算符。

entry.ZoomFactor += 0.5f;