繁体   English   中英

C# 调整大小 window 问题

[英]C# resizing window issue

我有一个问题。 当我最大化我的 window 时,其中的内容(标签/按钮)会损坏或相互重叠。 它仅在最大化和还原时发生。 我需要对我的 Resizecontrol 方法进行任何更改吗?

我不确定我的代码有什么问题 - 有什么建议吗?

附上我面临的问题。 [![面临的问题][1]][1]

我的代码:

using Common;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Common.Entities;
using System.Messaging;
using Entities;
using System.Timers;
using System.Threading;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Configuration;
using Newtonsoft.Json;

namespace Trafficlight
{
    public partial class Form1 : Form
    {
        #region
        private bool isFloor = false;
        private bool isLane1 = false;
        private bool isLane2 = false;
        private bool isBay1 = false;
        private bool isBay2 = false;
        private bool isBay3 = false;
        private bool isBay4 = false;
        private bool isBay5 = false;
        private bool isBay6 = false;
        private bool isBay7 = false;
        private bool isBay8 = false;
        private bool isBay1_Flash = false;
        private bool isBay2_Flash = false;
        private bool isBay3_Flash = false;
        private bool isBay4_Flash = false;
        private bool isBay5_Flash = false;
        private bool isBay6_Flash = false;
        private bool isBay7_Flash = false;
        private bool isBay8_Flash = false;
        private bool isBay1_Red = false;
        private bool isBay2_Red = false;
        private bool isBay3_Red = false;
        private bool isBay4_Red = false;
        private bool isBay5_Red = false;
        private bool isBay6_Red = false;
        private bool isBay7_Red = false;
        private bool isBay8_Red = false;
        String ip, lane_ip, bay_ip;
        System.Timers.Timer timer;
        System.Timers.Timer timer_LaneA;
        System.Timers.Timer timer_LaneB;
        System.Timers.Timer timer_Bay;
        System.Timers.Timer timer_Bay2;
        Manual_TrafficLightController m = new Manual_TrafficLightController();
        List<SystemTrafficLight> trafficlightList = new List<SystemTrafficLight>();
        string errorMessage = string.Empty;
        string floorL, laneL1, laneL2, bayL1, bayL2;
        string callApi = ConfigurationSettings.AppSettings.Get("MTLControl");


        private Rectangle button1OriginalRect;
        private Rectangle button2OriginalRect;
        private Rectangle button3OriginalRect;
        private Rectangle button4OriginalRect;
        private Rectangle button5OriginalRect;
        private Rectangle button6OriginalRect;
        private Rectangle button7OriginalRect;
        private Rectangle button8OriginalRect;
        private Rectangle button9OriginalRect;
        private Rectangle button10OriginalRect;
        private Rectangle button11OriginalRect;
        private Rectangle button12OriginalRect;
        private Rectangle button13OriginalRect;
        private Rectangle button14OriginalRect;
        private Rectangle button15OriginalRect;
        private Rectangle button16OriginalRect;
        private Rectangle button17OriginalRect;
        private Rectangle button18OriginalRect;
        private Rectangle button19OriginalRect;
        private Rectangle button20OriginalRect;
        private Rectangle button21OriginalRect;
        private Rectangle button22OriginalRect;
        private Rectangle button23OriginalRect;
        private Rectangle button24OriginalRect;
        private Rectangle button25OriginalRect;
        private Rectangle button26OriginalRect;
        private Rectangle button27OriginalRect;
        private Rectangle button28OriginalRect;
        private Rectangle button29OriginalRect;
        private Rectangle button30OriginalRect;
        private Rectangle label1OriginalRect;
        private Rectangle label2OriginalRect;
        private Rectangle label3OriginalRect;
        private Size formOriginalSize;
        #endregion


        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            formOriginalSize = this.Size;
            button1OriginalRect = new Rectangle(btnFloor1.Location.X, btnFloor1.Location.Y, btnFloor1.Width, btnFloor1.Height);
            button2OriginalRect = new Rectangle(btnLane1.Location.X, btnLane1.Location.Y, btnLane1.Width, btnLane1.Height);
            button3OriginalRect = new Rectangle(btnLane2.Location.X, btnLane2.Location.Y, btnLane2.Width, btnLane2.Height);
            button4OriginalRect = new Rectangle(btnBay1.Location.X, btnBay1.Location.Y, btnBay1.Width, btnBay1.Height);
            button5OriginalRect = new Rectangle(btnBay2.Location.X, btnBay2.Location.Y, btnBay2.Width, btnBay2.Height);
            button6OriginalRect = new Rectangle(btnBay3.Location.X, btnBay3.Location.Y, btnBay3.Width, btnBay3.Height);
            button7OriginalRect = new Rectangle(btnBay4.Location.X, btnBay4.Location.Y, btnBay4.Width, btnBay4.Height);
            button8OriginalRect = new Rectangle(btnBay5.Location.X, btnBay5.Location.Y, btnBay5.Width, btnBay5.Height);
            button9OriginalRect = new Rectangle(btnBay6.Location.X, btnBay6.Location.Y, btnBay6.Width, btnBay6.Height);
            button10OriginalRect = new Rectangle(btnBay7.Location.X, btnBay7.Location.Y, btnBay7.Width, btnBay7.Height);
            button11OriginalRect = new Rectangle(btnBay8.Location.X, btnBay8.Location.Y, btnBay8.Width, btnBay8.Height);
            button12OriginalRect = new Rectangle(btnFloor_Green.Location.X, btnFloor_Green.Location.Y, btnFloor_Green.Width, btnFloor_Green.Height);
            button13OriginalRect = new Rectangle(btnFloor_Wrong.Location.X, btnFloor_Wrong.Location.Y, btnFloor_Wrong.Width, btnFloor_Wrong.Height);
            button14OriginalRect = new Rectangle(btnFloor_Reset.Location.X, btnFloor_Reset.Location.Y, btnFloor_Reset.Width, btnFloor_Reset.Height);
            button15OriginalRect = new Rectangle(btnLane_Green.Location.X, btnLane_Green.Location.Y, btnLane_Green.Width, btnLane_Green.Height);
            button16OriginalRect = new Rectangle(BtnLane_Wait.Location.X, BtnLane_Wait.Location.Y, BtnLane_Wait.Width, BtnLane_Wait.Height);
            button17OriginalRect = new Rectangle(btnLane_Wrong.Location.X, btnLane_Wrong.Location.Y, btnLane_Wrong.Width, btnLane_Wrong.Height);
            button18OriginalRect = new Rectangle(btnReset_Lane1.Location.X, btnReset_Lane1.Location.Y, btnReset_Lane1.Width, btnReset_Lane1.Height);
            button19OriginalRect = new Rectangle(btnLane2_Green.Location.X, btnLane2_Green.Location.Y, btnLane2_Green.Width, btnLane2_Green.Height);
            button20OriginalRect = new Rectangle(btnLane2_Wait.Location.X, btnLane2_Wait.Location.Y, btnLane2_Wait.Width, btnLane2_Wait.Height);
            button21OriginalRect = new Rectangle(btnLane2_Wrong.Location.X, btnLane2_Wrong.Location.Y, btnLane2_Wrong.Width, btnLane2_Wrong.Height);
            button22OriginalRect = new Rectangle(btnReset_Lane2.Location.X, btnReset_Lane2.Location.Y, btnReset_Lane2.Width, btnReset_Lane2.Height);
            button23OriginalRect = new Rectangle(btnBay_FlashGreen.Location.X, btnBay_FlashGreen.Location.Y, btnBay_FlashGreen.Width, btnBay_FlashGreen.Height);
            button24OriginalRect = new Rectangle(BtnBay_Green.Location.X, BtnBay_Green.Location.Y, BtnBay_Green.Width, BtnBay_Green.Height);
            button25OriginalRect = new Rectangle(btnBay_Red.Location.X, btnBay_Red.Location.Y, btnBay_Red.Width, btnBay_Red.Height);
            button26OriginalRect = new Rectangle(btnReset_BayL1.Location.X, btnReset_BayL1.Location.Y, btnReset_BayL1.Width, btnReset_BayL1.Height);
            button27OriginalRect = new Rectangle(BtnBay2_FlashGreen.Location.X, BtnBay2_FlashGreen.Location.Y, BtnBay2_FlashGreen.Width, BtnBay2_FlashGreen.Height);
            button28OriginalRect = new Rectangle(btnBay2_Green.Location.X, btnBay2_Green.Location.Y, btnBay2_Green.Width, btnBay2_Green.Height);
            button29OriginalRect = new Rectangle(btnBay2_Red.Location.X, btnBay2_Red.Location.Y, btnBay2_Red.Width, btnBay2_Red.Height);
            button30OriginalRect = new Rectangle(btnReset_BayL2.Location.X, btnReset_BayL2.Location.Y, btnReset_BayL2.Width, btnReset_BayL2.Height);
            label1OriginalRect = new Rectangle(llbl_Level1.Location.X, llbl_Level1.Location.Y, llbl_Level1.Width, llbl_Level1.Height);
            label2OriginalRect = new Rectangle(llbl_Level3.Location.X, llbl_Level3.Location.Y, llbl_Level3.Width, llbl_Level3.Height);
            label3OriginalRect = new Rectangle(llbl_Level5.Location.X, llbl_Level5.Location.Y, llbl_Level5.Width, llbl_Level5.Height);


private void resizeChildrenControls()
        {
            resizeControl(button1OriginalRect, btnFloor1);
            resizeControl(button2OriginalRect, btnLane1);
            resizeControl(button3OriginalRect, btnLane2);
            resizeControl(button4OriginalRect, btnBay1);
            resizeControl(button5OriginalRect, btnBay2);
            resizeControl(button6OriginalRect, btnBay3);
            resizeControl(button7OriginalRect, btnBay4);
            resizeControl(button8OriginalRect, btnBay5);
            resizeControl(button9OriginalRect, btnBay6);
            resizeControl(button10OriginalRect, btnBay7);
            resizeControl(button11OriginalRect, btnBay8);
            resizeControl(button12OriginalRect, btnFloor_Green);
            resizeControl(button13OriginalRect, btnFloor_Wrong);
            resizeControl(button14OriginalRect, btnFloor_Reset);
            resizeControl(button15OriginalRect, btnLane_Green);
            resizeControl(button16OriginalRect, BtnLane_Wait);
            resizeControl(button17OriginalRect, btnLane_Wrong);
            resizeControl(button18OriginalRect, btnReset_Lane1);
            resizeControl(button19OriginalRect, btnLane2_Green);
            resizeControl(button20OriginalRect, btnLane2_Wait);
            resizeControl(button21OriginalRect, btnLane2_Wrong);
            resizeControl(button22OriginalRect, btnReset_Lane2);
            resizeControl(button23OriginalRect, btnBay_FlashGreen);
            resizeControl(button24OriginalRect, BtnBay_Green);
            resizeControl(button25OriginalRect, btnBay_Red);
            resizeControl(button26OriginalRect, btnReset_BayL1);
            resizeControl(button27OriginalRect, BtnBay2_FlashGreen);
            resizeControl(button28OriginalRect, btnBay2_Green);
            resizeControl(button29OriginalRect, btnBay2_Red);
            resizeControl(button30OriginalRect, btnReset_BayL2);
            resizeControl(label1OriginalRect, llbl_Level1);
            resizeControl(label2OriginalRect, llbl_Level3);
            resizeControl(label3OriginalRect, llbl_Level5);
        }

        private void resizeControl(Rectangle originalControlRect, Control control)
        //{
            //if (originalControlRect.X != 0)
            {
                float xRatio = (float)(Width) / (float)(formOriginalSize.Width);
                float yRatio = (float)(Height) / (float)(formOriginalSize.Height);

                int newX = (int)(originalControlRect.X * xRatio);
                int newY = (int)(originalControlRect.Y * yRatio);
                int newWidth = (int)(originalControlRect.Width * xRatio);
                int newHeight = (int)(originalControlRect.Height * yRatio);

                control.Location = new Point(newX, newY);
                control.Size = new Size(newWidth, newHeight);
            }
        // }

        private void Form1_Resize(object sender, EventArgs e)
        {
            resizeChildrenControls();
        }


  [1]: https://i.stack.imgur.com/1Rl57.png

根据 window 大小在表单上定位控件不是一个好主意。 尝试将控件放置在TableLayoutPanel中。 还可以利用Anchor 和 Dock属性。 请检查这个例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM