উত্তর:
সেট Labelএর AutoSizeসম্পত্তির False, TextAlignসম্পত্তিতে MiddleCenterএবং Dockসম্পত্তিতে Fill।
Control.Dockসম্পত্তি ( msdn.microsoft.com/en-us/library/... ), আপনি ডক করতে পারেন (লাঠি) ধারক একটি নির্দিষ্ট দিকে একটি নিয়ন্ত্রণ। উদাহরণ হিসেবে বলা যায় Left, Top, Rightবা Bottom। Fillকনটেইনারটিতে সমস্ত উপলব্ধ স্থান নিতে নিয়ন্ত্রণকে বলে tells
Dockসেটিংয়ে আমার কিছু করার দরকার নেই ।
Dockসেটিং অপ্রয়োজনীয় ছিল। AutoSizeসম্পত্তি পরিবর্তন করলে লেবেলটিকে একটি বাউন্ডিং বাক্স দেওয়া হয় যা আপনি ম্যানুয়ালি এর আকার সামঞ্জস্য করতে পারেন।
প্রোগ্রামগতভাবে সেট করার জন্য কিছু ছোট ছোট অতিরিক্ত সামগ্রী:
Label textLabel = new Label() {
AutoSize = false,
TextAlign = ContentAlignment.MiddleCenter,
Dock = DockStyle.None,
Left = 10,
Width = myDialog.Width - 10
};
ডকস্টাইল এবং সামগ্রীর প্রান্তিককরণ আপনার প্রয়োজন থেকে পৃথক হতে পারে। উদাহরণস্বরূপ, ডাব্লুপিএফ ফর্মের একটি সাধারণ লেবেলের জন্য আমি ডকস্টাইল.নোন ব্যবহার করি।
আপনি সম্পত্তি অ্যাঙ্কর সেট করে এটি অর্জন করবেন: কিছুই নয়।
আপনি যদি পুরো উপলব্ধ ক্ষেত্রে লেবেলটি ডক করতে না চান, তবে কেবলমাত্র টেক্সট চ্যাঞ্জডের পরিবর্তে সাইজচ্যাঞ্জড ইভেন্ট সেট করুন। প্রতিটি অক্ষর পরিবর্তন করলে লেবেলের প্রস্থের সম্পত্তি এবং তার পাঠ্য পরিবর্তিত হবে যখন স্বয়ংক্রিয় সম্পত্তিটি সত্য হিসাবে সেট করা হয়। সুতরাং, উপায় দ্বারা আপনি ফর্মটিকে কেন্দ্র করে লেবেল রাখতে কোনও সূত্র ব্যবহার করতে পারেন।
private void lblReport_SizeChanged(object sender, EventArgs e)
{
lblReport.Left = (this.ClientSize.Width - lblReport.Size.Width) / 2;
}
গৃহীত উত্তর দুটি কারণে আমার পক্ষে কার্যকর হয়নি:
BackColorসেট করে রেখেছি AutoSize = falseএবং Dock = Fillপুরো ফর্মটি পূরণ করার জন্য পটভূমির রঙের কারণ ঘটায়AutoSizeযাই হোক না কেন মিথ্যাতে সেট করতে পারিনি কারণ আমার লেবেল পাঠ্যটি গতিশীল ছিলপরিবর্তে, আমি বাম অফসেট গণনা করার জন্য কেবল ফর্মটির প্রস্থ এবং লেবেলের প্রস্থ ব্যবহার করেছি:
MyLabel.Left = (this.Width - MyLabel.Width) / 2;
আমি অনুরূপ কিছু করতে চেয়েছিলাম, তবে একটি পটভূমির চিত্রযুক্ত ফর্মটিতে, আমি দেখতে পেলাম যে যখন লেবেলের পাঠ্যটি পরিবর্তন করা হয়েছিল তখন এই পদ্ধতির মাধ্যমে স্পষ্ট ছিল, তাই আমি নিম্নলিখিতটি করলাম: * লেবেলটিকে স্বতঃসীমানকে সত্যতে সেট করুন এবং টেক্সটএলাইন্ট করুন MiddleCenter
তারপরে, প্রতিবার পাঠ্য পরিবর্তন হয়েছে (টাইমার ব্যবহার করে আমার কাজ করা হয়েছিল) আমি নিম্নলিখিত পদ্ধতিটি কল করেছি:
private Point GetPosition()
{
int y = (this.Height / 2) - (label1.Height / 2);
int x = (this.Width / 2) - (label1.Width / 2);
return new Point(x, y);
}
এবং এই রিটার্ন মানটিতে লেবেলের অবস্থানের সম্পত্তিটি সেট করুন। এটি নিশ্চিত করে যে পাঠ্যটি পরিবর্তিত হলে এবং লেবেলটি সর্বদা ফর্মের কেন্দ্রে থাকে এবং পূর্ণ-স্ক্রিন ফর্মের জন্য পুনরায় রঙগুলি স্পষ্ট না থাকে।
আপনি নিম্নলিখিত কোড স্নিপেট চেষ্টা করে দেখতে পারেন:
private Point CenterOfMenuPanel<T>(T control, int height=0) where T:Control {
Point center = new Point(
MenuPanel.Size.Width / 2 - control.Width * 2,
height != 0 ? height : MenuPanel.Size.Height / 2 - control.Height / 2);
return center;
}
এটি সত্যই কেন্দ্র
