I have been up and down this site and found a lot of info on the Screen class and how to count the number of monitors and such but how do I determine which montitor a form is currently in?
A simpler method than using the bounds is to use the Screen.FromControl() method. This is the same functionality that Windows uses.
Screen.FromControl(this)
will return the screen object for the screen that contains most of the form that you call it from.
This should do the trick for you:
private Screen FindCurrentMonitor(Form form)
{
return Windows.Forms.Screen.FromRectangle(new Rectangle( _
form.Location, form.Size));
}
It will return the screen that has the majority of the form in it. Alternativley, you can use
return Windows.Forms.Screen.FromPoint(Form.Location);
to return the screen that has the top left corner of the form in it.
I did notice that but I was hoping for something more elequent (from .net not from you.) So based on your advice I did this:
foreach (Screen screen in System.Windows.Forms.Screen.AllScreens)
{
if (screen.Bounds.Contains(this.Location))
{
this.textBox1.Text = screen.DeviceName;
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With