11

私はc#WinFormを使用してsman通知アプリを開発しています。画面の作業領域の右下隅にメインフォームを配置したいと思います。複数の画面の場合、アプリを配置する右端の画面を見つける方法があります。または、少なくとも最後に使用した画面を覚えて、右下隅にフォームを配置する方法はありますか?

4

5 に答える 5

25

現在、チェックするディスプレイは複数ありませんが、次のようになります。

    public partial class LowerRightForm : Form
    {
        public LowerRightForm()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            PlaceLowerRight();
            base.OnLoad(e);
        }

        private void PlaceLowerRight()
        {
            //Determine "rightmost" screen
            Screen rightmost = Screen.AllScreens[0];
            foreach (Screen screen in Screen.AllScreens)
            {
                if (screen.WorkingArea.Right > rightmost.WorkingArea.Right)
                    rightmost = screen;
            }

            this.Left = rightmost.WorkingArea.Right - this.Width;
            this.Top = rightmost.WorkingArea.Bottom - this.Height;
        }
    }
于 2013-03-03T18:33:31.770 に答える
9

フォームOnloadを上書きして、新しい場所を設定します。

protected override void OnLoad(EventArgs e)
{
    var screen = Screen.FromPoint(this.Location);
    this.Location = new Point(screen.WorkingArea.Right - this.Width, screen.WorkingArea.Bottom - this.Height);
    base.OnLoad(e);
}
于 2013-03-03T18:24:24.707 に答える
2
//Get screen resolution
Rectangle res = Screen.PrimaryScreen.Bounds; 

// Calculate location (etc. 1366 Width - form size...)
this.Location = new Point(res.Width - Size.Width, res.Height - Size.Height); 
于 2015-08-09T14:31:09.667 に答える
1

この次のコードは機能するはずです:)

var rec = Screen.PrimaryScreen.WorkingArea;
int margain = 10;

this.Location = new Point(rec.Width - (this.Width + margain), rec.Height - (this.Height + margain));
于 2019-07-30T02:39:37.557 に答える
0
    int x = Screen.PrimaryScreen.WorkingArea.Right - this.Width;
    int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;

    // Add this for the real edge of the screen:
    x = 0; // for Left Border or Get the screen Dimension to set it on the Right

    this.Location = new Point(x, y);
于 2015-11-01T16:39:54.837 に答える