When setting a form's opacity should I use a decimal or double?

I want to use a track-bar to change a form’s opacity.

This is my code:

decimal trans = trackBar1.Value / 5000;
this.Opacity = trans;

When I try to build it, I get this error:

Cannot implicitly convert type ‘decimal’ to ‘double’.

I tried making trans a double, but then the control doesn’t work. This code has worked fine for me in VB.NET in the past.

Add Comment
13 Answer(s)

An explicit cast to double isn’t necessary.

double trans = (double)trackBar1.Value / 5000.0;

Identifying the constant as 5000.0 (or as 5000d) is sufficient:

double trans = trackBar1.Value / 5000.0;
double trans = trackBar1.Value / 5000d;
Answered on July 15, 2016.
Add Comment

The best solution is:

this.Opacity = decimal.ToDouble(trackBar1.Value/5000);
Answered on July 15, 2016.
Add Comment

The Opacity property is of double type:

double trans = trackBar1.Value / 5000.0;
this.Opacity = trans;

or simply:

this.Opacity = trackBar1.Value / 5000.0;

or:

this.Opacity = trackBar1.Value / 5000d;

Notice that I am using 5000.0 (or 5000d) to force a double division because trackBar1.Value is an integer and it would perform an integer division and the result would be an integer.

Answered on July 15, 2016.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.