আপনি যদি কোনও ফর্মটিতে একটি প্যানেল তৈরি করেন এবং এটিকে ডক = শীর্ষে সেট করেন এবং অন্য প্যানেলটি ফেলে দিন এবং তার ডক = পূরণ সেট করুন, এটি প্রথম প্যানেলটিকে উপেক্ষা করে পুরো ফর্মটি পূরণ করতে পারে। ট্যাব অর্ডার পরিবর্তন করা কিছুই করে না।
আপনি যদি কোনও ফর্মটিতে একটি প্যানেল তৈরি করেন এবং এটিকে ডক = শীর্ষে সেট করেন এবং অন্য প্যানেলটি ফেলে দিন এবং তার ডক = পূরণ সেট করুন, এটি প্রথম প্যানেলটিকে উপেক্ষা করে পুরো ফর্মটি পূরণ করতে পারে। ট্যাব অর্ডার পরিবর্তন করা কিছুই করে না।
উত্তর:
ডকিং লেআউটটি ভাইবোনের নিয়ন্ত্রণের ক্রমের উপর নির্ভর করে । নিয়ন্ত্রণগুলি "বোতাম আপ" ডক হয়, সুতরাং সংগ্রহের শেষ নিয়ন্ত্রণটি প্রথমে ডক করা হয় । একটি ডকড নিয়ন্ত্রণ কেবল পূর্ববর্তী ডকযুক্ত ভাইবোনদের লেআউটটিকে অ্যাকাউন্টে নেয়। অতএব ডক = পূরণের সাথে নিয়ন্ত্রণটি সহোদর ক্রমে প্রথম (শীর্ষ) হওয়া উচিত, যদি আপনি এটি অন্য ডকড নিয়ন্ত্রণগুলি বিবেচনায় নিতে চান। এটি যদি প্রথম নিয়ন্ত্রণ না হয় তবে পূর্ববর্তী নিয়ন্ত্রণগুলি এটিকে ওভারল্যাপ করবে।
এটি বিভ্রান্তিকর হতে পারে কারণ ভাইবোন-ক্রমটি ভিজ্যুয়াল অর্ডারের মতো অগত্যা নয় এবং ভাইবোন আদেশটি নকশার দর্শন থেকে সর্বদা আপাত হয় না।
ডকুমেন্ট রূপরেখা উইন্ডো (দেখুন -> অন্যান্য উইন্ডোজ় -> ডকুমেন্ট রূপরেখা) নিয়ন্ত্রণ অনুক্রমের শৃঙ্খলা উপর একটি দরকারী গাছ-ভিউ দেয়, এবং আপনি নিয়ন্ত্রণ সহোদর ক্রম পরিবর্তন করতে পারবেন।
আপনি প্রসঙ্গ মেনু -> সামনে আনুন / পিছনে প্রেরণ করুন যা সরাসরি ভাইবোনদের প্রথম বা শেষ হতে নিয়ন্ত্রণকে সরিয়ে দেয় - সহ আপনি সরাসরি ডিজাইনারে ভাইবোন অর্ডারও পরিবর্তন করতে পারেন। এই মেনু লেবেলগুলি কিছুটা বিভ্রান্ত হতে পারে যেহেতু প্রকৃত প্রভাব লেআউট মডেলের উপর নির্ভর করে।
স্থির অবস্থানযুক্ত নিয়ন্ত্রণগুলি সহ, 2 ডি অবস্থানটি ভাইবোনের ক্রমের তুলনায় স্বতন্ত্র, তবে যখন নিয়ন্ত্রণগুলি ওভারল্যাপিং হয়, তখন ক্রমের প্রথম দিকের নিয়ন্ত্রণটি "শীর্ষে" থাকবে, পরে সহোদরের অংশটি লুকিয়ে রাখবে iding এই প্রসঙ্গে সামনে আনুন / প্রেরণ করুন ফিরে অর্থবোধ করে।
প্রবাহ- বা টেবিল-বিন্যাস প্যানেলের অভ্যন্তরে, ক্রম ক্রমটি নিয়ন্ত্রণের ভিজ্যুয়াল ক্রম নির্ধারণ করে। কোনও ওভারল্যাপিং নিয়ন্ত্রণ নেই। সুতরাং সামনে আনুন / ব্যাক টু ব্যাক আসলেই নিয়ন্ত্রণের ক্রমে প্রথমে বা শেষ করা make
ডকযুক্ত বিন্যাসের সাথে, সামনের দিকে ফিরিয়ে আনতে / ফেরত পাঠাতে আরও বিভ্রান্ত হতে পারে যেহেতু এটি নির্ধারণ করে যে ডকিংটি কোন ক্রমে গণনা করা হয়, সুতরাং একটি পূর্ণ-ডক নিয়ন্ত্রণের মাধ্যমে "সামনে আনুন" পিতামাতার মাঝখানে নিয়ন্ত্রণ স্থাপন করবে , সমস্ত প্রান্ত-ডকড নিয়ন্ত্রণগুলি অ্যাকাউন্টে নেওয়া।
ডক = ফিল পূরণ করে প্যানেলে ডান ক্লিক করুন এবং 'সামনে আনুন' এ ক্লিক করুন।
এটি এই নিয়ন্ত্রণটি সর্বশেষে তৈরি করে তোলে, যা একই ধারকটিতে অন্যান্য নিয়ন্ত্রণের ডক সেটিংসকে বিবেচনা করে।
আরেকটি, সম্ভাব্য ক্লিনার বিকল্পটি হ'ল টেবিললআউট নিয়ন্ত্রণ ব্যবহার করা। আপনার শীর্ষ ডকের জন্য পছন্দসই উচ্চতার এক সারি এবং আপনার নীচের জন্য 100% পূরণ করার জন্য আরও একটি সারি সেট করুন। উভয় প্যানেল ভিতরে পূরণ করুন এবং আপনার কাজ শেষ হয়েছে।
(যদিও টেবিললআউট কিছুটা অভ্যস্ত হয়ে পড়েছে))
আমারও একই সমস্যা ছিল এবং আমি এটি সমাধান করতে সক্ষম হয়েছি। অন্যের
সাথে আপনার যদি ধারক থাকে DockStyle.Fill
তবে ডকস্টাইল ছাড়াও শীর্ষ বা আপনার যা ইচ্ছা তা থাকা উচিত।
গুরুত্বপূর্ণটি হ'ল DockStyle.Fill
প্রথমে নিয়ন্ত্রণগুলিতে অন্যগুলি দিয়ে নিয়ন্ত্রণ যুক্ত করা ।
উদাহরণ:
ComboBox cb = new ComboBox();
cb.Dock = DockStyle.Top;
GridView gv = new GridView();
gv.Dock = DockStyle.Fill;
Controls.Add(gv); // this is okay
Controls.Add(cb);
তবে যদি আমরা প্রথমে সিবি রাখি
Controls.Add(cb);
Controls.Add(gv); // gv will overlap the combo box.
আপনি যদি কোডের অভ্যন্তরের উপাদানগুলির ক্রম পরিবর্তন করতে না চান তবে আপনি পাত্রে উদাহরণস্বরূপ ফর্ম, প্যানেল ইত্যাদির সাহায্যে কনটেইনার.কন্ট্রোলস.সেটচিল্ডইন্ডেক্স () পদ্ধতিটি ব্যবহার করতে পারেন যা আপনি আপনার নিয়ন্ত্রণগুলি যুক্ত করতে চান।
উদাহরণ:
//Container ------------------------------------
Panel Container = new Panel();
//Top-Docked Element ---------------------------
ButtonArea = new FlowLayoutPanel();
Container.Controls.Add(ButtonArea);
Container.Controls.SetChildIndex(ButtonArea, 1);
ButtonArea.Dock = DockStyle.Top;
//Fill-Docked Element --------------------------
box = new RichTextBox();
Container.Controls.Add(box);
Container.Controls.SetChildIndex(box, 0); //setting this to 0 does the trick
box.Dock = DockStyle.Fill;
জ্যাকসবি নথির বাহ্যরেখার সাথে ধারণাটি পেয়েছিল তবে শ্রেণিবিন্যাসটি আমার সমস্যার সমাধান করেনি। আমার নিয়ন্ত্রণগুলি শ্রেণিবদ্ধ শৈলীতে ছিল না তারা কেবল একই পিতামাতার সাথে তালিকাভুক্ত হয়েছিল।
আমি শিখেছি যে আপনি যদি আদেশটি পরিবর্তন করেন তবে এটি যেভাবে দেখতে চান সেটি ঠিক করবে।
তালিকার নীচের অংশের নিয়ন্ত্রণগুলি ডকুমেন্ট আউটলাইন উইন্ডোতে এর উপরে থাকা নিয়ন্ত্রণগুলি ওভারল্যাপ করবে। আপনার ক্ষেত্রে আপনি নিশ্চিত করবেন যে প্রথম প্যানেলটি দ্বিতীয় প্যানেলের নীচে এবং আরও রয়েছে।
এখানে একটি কৌশল যা আমার পক্ষে কাজ করেছে ..
শীর্ষস্থানীয় আইটেমটি রাখুন এবং এটি শীর্ষে ডক করুন।
একটি স্প্লিটার রাখুন এবং এটিকে শীর্ষেও ডক করুন, তারপরে এটি অক্ষম করুন (যদি আপনি শীর্ষের আকার পরিবর্তন করতে চান না)।
তারপরে ভরাট বস্তুটি রাখুন এবং ডকিংকে পূরণ করতে সেট করুন। অবজেক্টটি স্প্লিটারের নীচে থাকবে।
আমি একই ইস্যু মধ্যে দৌড়ে। খনি রান চলাকালীন সময়ে মেনু স্ট্রিপের নীচে নতুন / কাস্টম নিয়ন্ত্রণ যুক্ত করার সাথে ছিল। ডক করার সময় সমস্যাগুলি নিয়ন্ত্রণগুলি ছিল, ফর্মের শীর্ষ থেকে ডক করার সিদ্ধান্ত নিয়েছিল এবং মেনু স্ট্রিপটিকে সম্পূর্ণ উপেক্ষা করে, যদি আপনি আমাকে জিজ্ঞাসা করেন তবে খুব বিরক্ত হয়। যেহেতু কোডটি গতিশীলভাবে করতে হয়েছিল এবং নকশা মোড চলাকালীন নয় এটি অত্যন্ত হতাশার আকার ধারণ করেছে। আমি খুঁজে পাওয়া সবচেয়ে সহজ উপায় হ'ল ডিজাইন মোডের সময় একটি প্যানেল তৈরি করা এবং মেনু স্ট্রিপের নীচে ডক। সেখান থেকে আপনি প্যানেলগুলিতে নিয়ন্ত্রণগুলি কেবল যুক্ত করতে / অপসারণ করতে পারেন এবং রান সময় আপনি এটি ডক করতে পারেন। আপনার ফর্মের এমন সমস্ত নিয়ন্ত্রণের সাথে ঝামেলা করার দরকার নেই যা সত্যিকারের পরিবর্তনের প্রয়োজন হয় না, আপনার যা করা দরকার তা নির্ভর করে খুব বেশি কাজ।
object.dock = Fill
Panel.Controls.Add(object)
আমি জানি এটি একটি পুরানো পোস্ট তবে আমি দরকারী কিছু আবিষ্কার করেছি। গতিশীলভাবে তৈরি নিয়ন্ত্রণ (গুলি) -এর জন্য প্রোগ্রামিংয়ে ভাইবোন নিয়ন্ত্রণ আদেশ সামঞ্জস্য করতে আপনি এর মতো কিছু করতে পারেন:
parentForm.Controls.SetChildIndex (myPanel, 0)
আমার ক্ষেত্রে, আমি এটি কোনও ডক / ফিল প্যানেলটিকে আমার ফর্মের প্রথম নিয়ন্ত্রণ হিসাবে স্থানান্তরিত করার জন্য করেছি যাতে এটি অন্য কোনও ডক নিয়ন্ত্রণের সাথে ডক / শীর্ষে (মেনু স্ট্রিপ) সেট করে না।