未来の自分へ知識谷金

ゆーきのエンジニアブログ
C#Visual Studioプログラミング

【C#】画面上に枠を表示する

.NETC#Visual StudioVisual Studio 2022

C#でデスクトップ上に四角枠を表示するコードを記載します。

■DialogRegionView.cs

using System.Drawing;
using System.Windows.Forms;

namespace SCSupportTool
{
    public partial class DialogRegionView : Form
    {
        private Point mousePoint;

        public DialogRegionView()
        {
            InitializeComponent();
        }

        private void DialogRegionView_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                mousePoint = new Point(e.X, e.Y);
            }
        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
            {
                this.Left += e.X - mousePoint.X;
                this.Top += e.Y - mousePoint.Y;
            }
        }

        public void SetRegion(Rectangle region)
        {
            this.Location = region.Location;
            this.Size = region.Size;
        }
    }
}

■使い方

private DialogRegionView[] dlgRegionViews = new DialogRegionView[(int)eRegion._Count];

        private void ShowRegion(eRegion iRegion)
        {
            Rectangle region = Program.App.Param.Regions[(int)iRegion];
            if (this.dlgRegionViews[(int)iRegion] == null)
            {
                this.dlgRegionViews[(int)iRegion] = new DialogRegionView();
                DialogRegionView view = this.dlgRegionViews[(int)iRegion];
                view.SetRegion(region);
                view.Show();
            }
        }

        private void InvisibleRegion(eRegion iRegion)
        {
            if (this.dlgRegionViews[(int)iRegion] != null)
            {
                this.dlgRegionViews[(int)iRegion].Close();
                this.dlgRegionViews[(int)iRegion] = null;
            }
        }

以上!