C#當窗體大小改變時,控制元件的位置和大小隨之改變
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
namespace WindowsApplication3
{
publicpartialclass Form1 : Form
{
/*******************設定程式中可能要用到的用以儲存初始資料的動態陣列及相關私有變數*****************************
{
InitializeComponent();
}
{
GetInitialFormSize();
//this.AutoScroll = true;
//this.SetAutoSizeMode(FormSizeWidth,FormSizeHeight);
//this.AutoScrollMinSize.Width = FormSizeWidth;
//this.AutoScrollMinSize.Height = FormSizeHeight;GetAllCrlLocation(this);
GetAllCrlSize(this);
}
publicvoid GetAllCrlLocation(Control CrlContainer)//獲得並存儲窗體中各控制元件的初始位置{
foreach (Control iCrl in CrlContainer.Controls)
{
if (iCrl.Controls.Count >0)
GetAllCrlLocation(iCrl);
InitialCrl.Add(iCrl);
CrlLocationX.Add(iCrl.Location.X);
CrlLocationY.Add(iCrl.Location.Y);
}
}
publicvoid GetAllCrlSize(Control CrlContainer)//獲得並存儲窗體中各控制元件的初始尺寸{
foreach (Control iCrl in CrlContainer.Controls)
{
if (iCrl.Controls.Count >0)
GetAllCrlSize(iCrl);
CrlSizeWidth.Add(iCrl.Width);
CrlSizeHeight.Add(iCrl.Height);
}
}
publicvoid GetInitialFormSize()//獲得並存儲窗體的初始尺寸{
FormSizeWidth =this.Size.Width;
FormSizeHeight =this.Size.Height;
}
privatevoid Form1_SizeChanged(object sender, EventArgs e)
{
// MessageBox.Show("窗體尺寸改變");Wcounter =0;
int counter =0;
if (this.Size.Width < FormSizeWidth ||this.Size.Height < FormSizeHeight)
//如果窗體的大小在改變過程中小於窗體尺寸的初始值,則窗體中的各個控制元件自動重置為初始尺寸,且窗體自動新增滾動條{
foreach (Control iniCrl in InitialCrl)
{
iniCrl.Width = (int)CrlSizeWidth[counter];
iniCrl.Height = (int)CrlSizeHeight[counter];
Point point =new Point();
point.X = (int)CrlLocationX[counter];
point.Y = (int)CrlLocationY[counter];
iniCrl.Bounds =new Rectangle(point, iniCrl.Size);
counter++;
}
this.AutoScroll =true;
}
else//否則,重新設定窗體中所有控制元件的大小(窗體內所有控制元件的大小隨窗體大小的變化而變化){
this.AutoScroll =false;
ResetAllCrlState(this);
}
}
publicvoid ResetAllCrlState(Control CrlContainer)//重新設定窗體中各控制元件的狀態(在與原狀態的對比中計算而來){
FormSizeChangedX = (double)this.Size.Width / (double)FormSizeWidth;
FormSizeChangedY = (double)this.Size.Height / (double)FormSizeHeight;
foreach (Control kCrl in CrlContainer.Controls)
{
/*string name = kCrl.Name.ToString();
MessageBox.Show(name);
MessageBox.Show(Wcounter.ToString());*/if (kCrl.Controls.Count >0)
{
ResetAllCrlState(kCrl);
}
Point point =new Point();
point.X = (int)((int)CrlLocationX[Wcounter] * FormSizeChangedX);
point.Y = (int)((int)CrlLocationY[Wcounter] * FormSizeChangedY);
kCrl.Width = (int)((int)CrlSizeWidth[Wcounter] * FormSizeChangedX);
kCrl.Height = (int)((int)CrlSizeHeight[Wcounter] * FormSizeChangedY);
kCrl.Bounds =new Rectangle(point, kCrl.Size);
Wcounter++;
}
}
}
}
相關推薦
C#當窗體大小改變時,控制元件的位置和大小隨之改變
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.For
C# Winform 一個可以用滑鼠改變控制元件位置和大小的類,直接呼叫即可.....(程式碼收藏)
using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Data; using System.
VC中自動改變控制元件位置和大小的對話方塊類
lxDialog.h檔案: ///////////////////////////////////////////////////////////////////////////////////// // 自動改變控制元件位置和大小的對話方塊類 // 檔名:lxDialog.h //
android 動態改變控制元件位置和大小
動態改變控制元件位置的方法: setPadding()的方法更改佈局位置。 如我要把Imageview下移200px: ImageView.setPadding( ImageView.getPaddingLeft(), ImageView.get
MFC 設定控制元件位置和大小
初始化對話方塊大小: ::SetWindowPos(this->m_hWnd, HWND_BOTTOM, 0, 0, 100, 500, SWP_NOZORDER); 最近經常要用到改變控制元件在對話方塊上的位置和大小,一直找不到有效的方法,查看了很多資料。這篇
C#解決動態新增控制元件時,控制元件閃爍的問題
近段時間一直用C#來做開發,但是C#控制元件太多或者動態新增的控制元件,控制元件一直一閃一閃的,始終不知道什麼問題。 各種度娘,沒去谷哥,因為上不去,你懂得。 翻遍了很多資料,都在說雙快取,還有什麼圖片什麼的,各種程式碼嘗試無效,之後看到CSDN一個帖子,看完之後發現這一段程式碼真的解決了閃爍的問題!原理我還
ListView優化時,控制元件行,報空指標。
FATAL EXCEPTION: main &n
iOS點選cell時,控制元件背景色消失的解決方法
同時呼叫一下兩個方法: - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; self.quickProfessionLabel
C#當窗體大小改變時,窗體中的控制元件大小也隨之改變
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.For
c#如何保持控制元件位置與窗體同比例?C#實現窗體控制元件隨窗體大小改變(包括字型大小)
可以通過Dock屬性和Anchor屬性來控制 設定控制元件的 Anchor屬性 如果要隨著窗體變化而變化 則設定為Top, Bottom, Left, Right 當然也可以只設定期中幾個值 左邊的設定TOP,LEFT,中間設NONE,右邊的設right,bottom
當activity改變時,我們如何處理它
速度 change 假設 IT super conf In develop aras 用戶和系統觸發-的事件,可能造成一個activity狀體的改變。這個文檔描述了一些常見的情況,和如何去處理這些改變。 原網站:https://developer.android.googl
[譯] 設計師的決策樹:當遇到豬隊友時,你需要一個系統來控制每個人
原文地址:A Decision Tree for Designers 原文作者:Cap Watkins 譯文出自:掘金翻譯計劃 本文永久連結:github.com/xitu/gold-m… 譯者:zhmhhu 校對者:calpa, Wangalan30
C#窗體設計:自動調整控制元件大小
新建一個C#應用程式,應用程式命名為Change 窗體介面設計如下 雙擊窗體新增Load()函式,函式中新增一下程式碼: private void Form1_Load(object sender, EventArgs e)
C#實現窗體拖動、不允許窗體拖動、任意控制元件執行時拖動
1、不允許窗體被拖動。即使點選藍色標題條。 程式碼片段,加入不想被拖動的窗體中即可 protectedoverridevoid WndProc(refMessage m) { base.WndProc(ref m);
C#點選窗體最小化時,隱藏工作列和顯示托盤圖示
在窗體的Deactivate事件上,寫以下程式碼: private void Form1_Deactivate(object sender, EventArgs e)
C語言之定義一個函式,實現對字串做如下操作:當字元為字母時,大小寫互換,當字元為數字時,原樣輸出,當有其它字元出現時,結束操作,返回已處理的字串
Action(){ char str[]={"tEst234%^road"};int len = sizeof(str)/sizeof(char);//strTest2呼叫函式lr_output_message("%s",strTest2(str,len)); r
MFC控制元件位置隨窗體大小而改變
因為在做上位機,需要MFC中的控制元件位置隨窗體大小而改變,以下是程式碼: 首先初始化CRect m_rect,該成員變數用來記錄窗體的當前大小。 void CTEST4View::OnSize(UINT nType, int cx, int cy)
ORA-03206,當表空間不夠時,如何以添加數據文件的方式擴展表空間
style 創建表空間 mage all 註意 flow ada -- 導入 準備導入一個數據庫,大約為33G,開始創建的空庫表空間為自增到20G,結果自然不夠,然後就開始自動擴展表空間大小 使用的如下語句 --自動擴展表空間大小 ALTER DATABASE DA
當故障來襲時,如何證明你的網絡沒問題
class 4.4 ping不通 上傳 bsp 公眾 最大 人的 eply 有人說網絡工程師是整個IT行業中最可能受氣的工種。其實這一點捷個本人也不否認,因為你管理的網絡,是所有服務器、終端相互通信的基礎。如果有電腦上網不正常,或者是訪問網絡中的某一臺服務器出現異常現象,所
快速冪取模(當數很大時,相乘long long也會超出的解決辦法)
結合 超出 但是 long 數字 也會 連續 return result 當幾個數連續乘最後取模時,可以將每個數字先取模,最後再取模,即%對於*具有結合律。但是如果當用來取模的數本身就很大,采取上述方法就不行了。這個時候可以借鑒快速冪取模的方法,來達到大數相乘取模的效果。