প্যানেল.ডক অন্য প্যানেল.ডক সেটিং উপেক্ষা করে পূরণ করুন


154

আপনি যদি কোনও ফর্মটিতে একটি প্যানেল তৈরি করেন এবং এটিকে ডক = শীর্ষে সেট করেন এবং অন্য প্যানেলটি ফেলে দিন এবং তার ডক = পূরণ সেট করুন, এটি প্রথম প্যানেলটিকে উপেক্ষা করে পুরো ফর্মটি পূরণ করতে পারে। ট্যাব অর্ডার পরিবর্তন করা কিছুই করে না।

উত্তর:


335

ডকিং লেআউটটি ভাইবোনের নিয়ন্ত্রণের ক্রমের উপর নির্ভর করে । নিয়ন্ত্রণগুলি "বোতাম আপ" ডক হয়, সুতরাং সংগ্রহের শেষ নিয়ন্ত্রণটি প্রথমে ডক করা হয় । একটি ডকড নিয়ন্ত্রণ কেবল পূর্ববর্তী ডকযুক্ত ভাইবোনদের লেআউটটিকে অ্যাকাউন্টে নেয়। অতএব ডক = পূরণের সাথে নিয়ন্ত্রণটি সহোদর ক্রমে প্রথম (শীর্ষ) হওয়া উচিত, যদি আপনি এটি অন্য ডকড নিয়ন্ত্রণগুলি বিবেচনায় নিতে চান। এটি যদি প্রথম নিয়ন্ত্রণ না হয় তবে পূর্ববর্তী নিয়ন্ত্রণগুলি এটিকে ওভারল্যাপ করবে।

এটি বিভ্রান্তিকর হতে পারে কারণ ভাইবোন-ক্রমটি ভিজ্যুয়াল অর্ডারের মতো অগত্যা নয় এবং ভাইবোন আদেশটি নকশার দর্শন থেকে সর্বদা আপাত হয় না।

ডকুমেন্ট রূপরেখা উইন্ডো (দেখুন -> অন্যান্য উইন্ডোজ় -> ডকুমেন্ট রূপরেখা) নিয়ন্ত্রণ অনুক্রমের শৃঙ্খলা উপর একটি দরকারী গাছ-ভিউ দেয়, এবং আপনি নিয়ন্ত্রণ সহোদর ক্রম পরিবর্তন করতে পারবেন।

আপনি প্রসঙ্গ মেনু -> সামনে আনুন / পিছনে প্রেরণ করুন যা সরাসরি ভাইবোনদের প্রথম বা শেষ হতে নিয়ন্ত্রণকে সরিয়ে দেয় - সহ আপনি সরাসরি ডিজাইনারে ভাইবোন অর্ডারও পরিবর্তন করতে পারেন। এই মেনু লেবেলগুলি কিছুটা বিভ্রান্ত হতে পারে যেহেতু প্রকৃত প্রভাব লেআউট মডেলের উপর নির্ভর করে।

স্থির অবস্থানযুক্ত নিয়ন্ত্রণগুলি সহ, 2 ডি অবস্থানটি ভাইবোনের ক্রমের তুলনায় স্বতন্ত্র, তবে যখন নিয়ন্ত্রণগুলি ওভারল্যাপিং হয়, তখন ক্রমের প্রথম দিকের নিয়ন্ত্রণটি "শীর্ষে" থাকবে, পরে সহোদরের অংশটি লুকিয়ে রাখবে iding এই প্রসঙ্গে সামনে আনুন / প্রেরণ করুন ফিরে অর্থবোধ করে।

প্রবাহ- বা টেবিল-বিন্যাস প্যানেলের অভ্যন্তরে, ক্রম ক্রমটি নিয়ন্ত্রণের ভিজ্যুয়াল ক্রম নির্ধারণ করে। কোনও ওভারল্যাপিং নিয়ন্ত্রণ নেই। সুতরাং সামনে আনুন / ব্যাক টু ব্যাক আসলেই নিয়ন্ত্রণের ক্রমে প্রথমে বা শেষ করা make

ডকযুক্ত বিন্যাসের সাথে, সামনের দিকে ফিরিয়ে আনতে / ফেরত পাঠাতে আরও বিভ্রান্ত হতে পারে যেহেতু এটি নির্ধারণ করে যে ডকিংটি কোন ক্রমে গণনা করা হয়, সুতরাং একটি পূর্ণ-ডক নিয়ন্ত্রণের মাধ্যমে "সামনে আনুন" পিতামাতার মাঝখানে নিয়ন্ত্রণ স্থাপন করবে , সমস্ত প্রান্ত-ডকড নিয়ন্ত্রণগুলি অ্যাকাউন্টে নেওয়া।


1
আমার একটি ফর্মের একটি প্যানেল, স্ট্যাটাস স্ট্রিপ এবং মেনু স্ট্রিপ রয়েছে এবং মনে হয় যে আমি যখন মেনু স্ট্রিপটিকে শীর্ষে, নীচে স্থিতি স্ট্রিপটি ডক করি এবং প্যানেলটি পূরণ করি, তখন প্যানেলটি এর মধ্যবর্তী স্থানটি পূরণ করবে না দুটি স্ট্রিপ যদি না হয় এটি প্রথম ভাইবাল না হয় (দুটি স্ট্রিপের উপরে ডকুমেন্ট আউটলাইন উইন্ডোর শীর্ষে)। প্যানেলটি নীচে সরানো ("শেষের দিকে") স্ট্রিপগুলি জুড়ে .েকে দেয়। সুতরাং ডক = ফিল নিয়ন্ত্রণ অবশ্যই ক্রমে প্রথম সহোদর হওয়া উচিত? আমি কি এই ভুল পড়ছি? আমি 3.5 (2008) ব্যবহার করছি। এই পরিবর্তন হয়েছে?
jrsconfitto

53
TL; ড; ডক = ফিল পূরণ করে প্যানেলে ডান ক্লিক করুন এবং 'সামনে আনুন' এ ক্লিক করুন।
ক্রিশ্চিয়ানপ

20
ডকুমেন্ট আউটলাইন উইন্ডোর জন্য +1। কখনই জানত না যে এর অস্তিত্ব আছে, তবুও এটি এতটা দরকারী।
গ্লিগোরান

2
আমি কীভাবে এই অগ্রগতি করতে পারি? আমি বোঝাতে চাইছি, আমি নিয়ন্ত্রণগুলি গতিশীলভাবে যুক্ত করছি তাই আমি এটি করতে ডিজাইনার ব্যবহার করতে পারি না।
ক্যামিলো মার্টিন

2
@ ক্যামিলো: আপনি যদি গতিশীলভাবে নিয়ন্ত্রণগুলি যুক্ত করেন তবে আপনার নিজের পছন্দমতো ক্রম যুক্ত করা উচিত।
জ্যাকবিবি

110

ডক = ফিল পূরণ করে প্যানেলে ডান ক্লিক করুন এবং 'সামনে আনুন' এ ক্লিক করুন।

এটি এই নিয়ন্ত্রণটি সর্বশেষে তৈরি করে তোলে, যা একই ধারকটিতে অন্যান্য নিয়ন্ত্রণের ডক সেটিংসকে বিবেচনা করে।


1
সরল, গডসেন্ড, এটি আমাকে সত্যিই বিরক্ত করেছিল
স্মার্কম্যান man

আপনি একবার এ সম্পর্কে চিন্তাভাবনা করে।
গ্যারি কিন্ডেল

7

আরেকটি, সম্ভাব্য ক্লিনার বিকল্পটি হ'ল টেবিললআউট নিয়ন্ত্রণ ব্যবহার করা। আপনার শীর্ষ ডকের জন্য পছন্দসই উচ্চতার এক সারি এবং আপনার নীচের জন্য 100% পূরণ করার জন্য আরও একটি সারি সেট করুন। উভয় প্যানেল ভিতরে পূরণ করুন এবং আপনার কাজ শেষ হয়েছে।

(যদিও টেবিললআউট কিছুটা অভ্যস্ত হয়ে পড়েছে))


1
টেবিললআউট লেআউট পারফরম্যান্সের জন্য ডকিং কনটারোলগুলির চেয়েও ধীর। বিশেষত যদি আপনি টেবিললআউট ব্যবহার করেন এমন ব্যবহারকারীরা নিয়ন্ত্রণ করেছেন। তবে এটি নিশ্চিত হওয়ার জন্য এটি একটি দুর্দান্ত লেআউট দেয়।
নিক

1
উপরে বর্ণিত হিসাবে এই পারফরম্যান্সটি এমন কোনও কিছুর আঘাত করে যা একজন সাধারণ ব্যবহারকারী দুটি প্যানেলের সাধারণ ক্ষেত্রে দেখতে পাবে? বা আপনার যখন লক্ষ লক্ষ ইউসি থাকে, সমস্ত লেআউট সহ সমস্ত এক লেআউটে থাকে তখন তারা কী লক্ষ্য করে? (হাস্যকরভাবে, বর্তমানে আমি যে অ্যাপটিতে কাজ করছি তা এর মতো, এবং অভিনয়টি ঠিক আছে ...)
জন রুডি

টেবিললআউট বেশ হালকা ওজন। আপনি যদি কয়েকটি নিয়ন্ত্রণ রেখে থাকেন তবে আপনি পারফরম্যান্সের সমস্যাগুলি দেখতে পাবেন না।
টিম

7

আমারও একই সমস্যা ছিল এবং আমি এটি সমাধান করতে সক্ষম হয়েছি। অন্যের
সাথে আপনার যদি ধারক থাকে 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.

2

আপনি যদি কোডের অভ্যন্তরের উপাদানগুলির ক্রম পরিবর্তন করতে না চান তবে আপনি পাত্রে উদাহরণস্বরূপ ফর্ম, প্যানেল ইত্যাদির সাহায্যে কনটেইনার.কন্ট্রোলস.সেটচিল্ডইন্ডেক্স () পদ্ধতিটি ব্যবহার করতে পারেন যা আপনি আপনার নিয়ন্ত্রণগুলি যুক্ত করতে চান।

উদাহরণ:

     //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;

1

জ্যাকসবি নথির বাহ্যরেখার সাথে ধারণাটি পেয়েছিল তবে শ্রেণিবিন্যাসটি আমার সমস্যার সমাধান করেনি। আমার নিয়ন্ত্রণগুলি শ্রেণিবদ্ধ শৈলীতে ছিল না তারা কেবল একই পিতামাতার সাথে তালিকাভুক্ত হয়েছিল।

আমি শিখেছি যে আপনি যদি আদেশটি পরিবর্তন করেন তবে এটি যেভাবে দেখতে চান সেটি ঠিক করবে।

তালিকার নীচের অংশের নিয়ন্ত্রণগুলি ডকুমেন্ট আউটলাইন উইন্ডোতে এর উপরে থাকা নিয়ন্ত্রণগুলি ওভারল্যাপ করবে। আপনার ক্ষেত্রে আপনি নিশ্চিত করবেন যে প্রথম প্যানেলটি দ্বিতীয় প্যানেলের নীচে এবং আরও রয়েছে।


0

এখানে একটি কৌশল যা আমার পক্ষে কাজ করেছে ..

শীর্ষস্থানীয় আইটেমটি রাখুন এবং এটি শীর্ষে ডক করুন।

একটি স্প্লিটার রাখুন এবং এটিকে শীর্ষেও ডক করুন, তারপরে এটি অক্ষম করুন (যদি আপনি শীর্ষের আকার পরিবর্তন করতে চান না)।

তারপরে ভরাট বস্তুটি রাখুন এবং ডকিংকে পূরণ করতে সেট করুন। অবজেক্টটি স্প্লিটারের নীচে থাকবে।


0

আমি একই ইস্যু মধ্যে দৌড়ে। খনি রান চলাকালীন সময়ে মেনু স্ট্রিপের নীচে নতুন / কাস্টম নিয়ন্ত্রণ যুক্ত করার সাথে ছিল। ডক করার সময় সমস্যাগুলি নিয়ন্ত্রণগুলি ছিল, ফর্মের শীর্ষ থেকে ডক করার সিদ্ধান্ত নিয়েছিল এবং মেনু স্ট্রিপটিকে সম্পূর্ণ উপেক্ষা করে, যদি আপনি আমাকে জিজ্ঞাসা করেন তবে খুব বিরক্ত হয়। যেহেতু কোডটি গতিশীলভাবে করতে হয়েছিল এবং নকশা মোড চলাকালীন নয় এটি অত্যন্ত হতাশার আকার ধারণ করেছে। আমি খুঁজে পাওয়া সবচেয়ে সহজ উপায় হ'ল ডিজাইন মোডের সময় একটি প্যানেল তৈরি করা এবং মেনু স্ট্রিপের নীচে ডক। সেখান থেকে আপনি প্যানেলগুলিতে নিয়ন্ত্রণগুলি কেবল যুক্ত করতে / অপসারণ করতে পারেন এবং রান সময় আপনি এটি ডক করতে পারেন। আপনার ফর্মের এমন সমস্ত নিয়ন্ত্রণের সাথে ঝামেলা করার দরকার নেই যা সত্যিকারের পরিবর্তনের প্রয়োজন হয় না, আপনার যা করা দরকার তা নির্ভর করে খুব বেশি কাজ।

object.dock = Fill
Panel.Controls.Add(object)

0

আমি জানি এটি একটি পুরানো পোস্ট তবে আমি দরকারী কিছু আবিষ্কার করেছি। গতিশীলভাবে তৈরি নিয়ন্ত্রণ (গুলি) -এর জন্য প্রোগ্রামিংয়ে ভাইবোন নিয়ন্ত্রণ আদেশ সামঞ্জস্য করতে আপনি এর মতো কিছু করতে পারেন:

parentForm.Controls.SetChildIndex (myPanel, 0) 

আমার ক্ষেত্রে, আমি এটি কোনও ডক / ফিল প্যানেলটিকে আমার ফর্মের প্রথম নিয়ন্ত্রণ হিসাবে স্থানান্তরিত করার জন্য করেছি যাতে এটি অন্য কোনও ডক নিয়ন্ত্রণের সাথে ডক / শীর্ষে (মেনু স্ট্রিপ) সেট করে না।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.