কীভাবে কেবল ক্লোজ (এক্স) বোতামটি আড়াল করবেন?


151

আমার একটি মোডাল ডায়লগ রয়েছে এবং আমার ক্লোজ (এক্স) বোতামটি আড়াল করা দরকার, তবে আমি ব্যবহার করতে পারি না ControlBox = false, কারণ আমাকে মিনিমাইজ এবং ম্যাক্সিমাইজ বোতামগুলি রাখা দরকার।

আমার ঠিক ক্লোজ বোতামটি লুকানো দরকার, এটি করার কোনও উপায় আছে কি?

অনেক ধন্যবাদ!

আপডেট: আমার এটি নিষ্ক্রিয় করার অনুমতি ছিল যা সহজ is


এই হতে পারে ভালোবাসি কি আপনি চান: [লুকান বন্ধ বোতাম [X] হল উইন ফর্মগুলির সি # .NET মধ্যে] ( sameeramrutia.wordpress.com/2008/09/16/... ) শুধু googled: hide close button c#দ্বিতীয় ফলাফলের এখানে! =)
মিগুয়েল অ্যাঞ্জেলো

আপনি ভুল, আমি অক্ষম বোতামটি চাই না, তবে এটি লুকিয়ে রাখো .. আপনি কি কোনও সমাধান খুঁজে পেতে সক্ষম?
স্টেফানো এম

8
প্রয়োজন একটি শক্ত শব্দ। এই প্রয়োজনীয়তা কোথা থেকে আসছে? আসল প্রয়োজনীয়তাটি কী - যে ব্যবহারকারী প্রোগ্রামটি শেষ করতে পারে না, বা ইউআই "দেখে মনে হচ্ছে এটির কাছে বোতাম নেই"? কারণ এর চারপাশে অন্যান্য উপায় রয়েছে এবং আপনার সমস্তগুলি বন্ধ করে দেওয়ার জন্য আপনাকে কঠোরভাবে চাপ দেওয়া হবে (যেমন টাস্ক ম্যানেজার, টাস্কিল, সম্ভবত Alt + f4, ইত্যাদি)। আমি ব্যক্তিগতভাবে এটিতে খুব বেশি পরিশ্রম করব না, কারণ আপনি যদি আপনার কোনওভাবেই পুরো অ্যাপটি পুনরায় ত্বক না করেন তবে এটি প্রচেষ্টা ব্যর্থ হবে এবং ব্যবহারকারীর প্রত্যাশা / অন্যান্য উইন্ডোজ প্রোগ্রামগুলির সাথে ধারাবাহিকতা ভঙ্গ করবে।
মের্লিন মরগান-গ্রাহাম

4
@ সায়েম এটি এই পৃষ্ঠাটি প্রকাশ করে, সুতরাং এই জাতীয় সমালোচক হয়ে উঠবেন না।
ব্রায়ান গ্রাহাম

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

উত্তর:


148

আপনি এটিকে আড়াল করতে পারবেন না, তবে আপনি ফর্মের ক্রিয়েটপ্যারাম সম্পত্তিটি ওভাররাইড করে এটি অক্ষম করতে পারবেন।

private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams
{
    get
    {
       CreateParams myCp = base.CreateParams;
       myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ;
       return myCp;
    }
}

সূত্র: http://www.codeproject.com/KB/cs/DisableClose.aspx


ধন্যবাদ, আমি এই সমাধানটি খুঁজে পেয়েছি, তবে আমরা কেবল এটি অক্ষম করে নয়, লুকিয়ে রাখতে চাই :( যাইহোক ধন্যবাদ!
এম

4
আপনার ফর্মটি স্ক্র্যাচ থেকে নকশা করা ছাড়া আর কোনও উপায় নেই।
ড্যানিয়েল এ। হোয়াইট

হাঁ। বন্ধ বোতাম ছাড়াই আপনার নিজের কন্ট্রোলবক্সের সাহায্যে নিজের ফর্মটি আরও ভাল তৈরি করুন তারপরে পিতামাতার ফর্মের নিয়ন্ত্রণ বাক্সটি লুকান।
বাহামুত

'অভিষেক.কোপড়া' থেকে উত্তর সহজ এবং কার্যকর।
আলতাফ প্যাটেল

রানটাইম চলাকালীন আবার কীভাবে এটি সক্ষম করবেন?
মাইক ডি ক্লার্ক

158

আমরা ফর্মের কাছাকাছি বোতামটি সেট করে লুকিয়ে রাখতে পারি this.ControlBox=false;


29
তিনি প্রশ্নটি পড়েছেন যেখানে তিনি উল্লেখ করেছিলেন যে এটি কোনও বিকল্প নয়?
পরিবেশন করুন

28
একটি গুগল অনুসন্ধান করেছে এবং এই এসও কিউএ শীর্ষ হিট হয়েছিল। এবং এই উত্তরটি আমি যা খুঁজছিলাম was ধন্যবাদ অভিষেককে ...
হাবিল গ্যাক্সিওলা

15
এই সমস্ত সাইজিং বোতাম লুকায়। শুধু এক্স নয়
সমৃদ্ধ শীলার

1
তোমাকে অনেক ধন্যবাদ! সহজ রাস্তা.

26

ভাল, আপনি গোটা সিস্টেম মেনু সরিয়ে এটি লুকিয়ে রাখতে পারেন:

private const int WS_SYSMENU = 0x80000;
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.Style &= ~WS_SYSMENU;
        return cp;
    }
}

অবশ্যই, এটি করার ফলে ন্যূনতম এবং সর্বাধিক বোতামগুলি সরিয়ে দেওয়া হয়।

যদি আপনি সিস্টেম মেনু রাখেন তবে নিকটবর্তী আইটেমটি সরিয়ে ফেলুন তবে ক্লোজ বোতামটি রয়ে গেছে তবে অক্ষম করা আছে।

চূড়ান্ত বিকল্পটি হ'ল নন-ক্লায়েন্ট অঞ্চলটি নিজেই রঙ করুন। এটি সঠিকভাবে পাওয়া খুব কঠিন।


4
এটিও দুর্দান্ত কাজ করে! তবে কন্ট্রোলবক্স = মিথ্যা আপনার উপায় হিসাবে ব্যবহার করা সহজ।
সিমেওন

1
এটি ControlBoxমিথ্যা হিসাবে সেট হিসাবে একই । এছাড়াও, এটি প্রয়োজনীয়তা ব্যর্থ করে: আমার মিনিমাইজ এবং ম্যাক্সিমাইজ বোতামগুলি রাখা দরকার
হোয়াইটশোজ

23

আপনি ব্যবহার করে ক্লোজ বক্সটি লুকিয়ে রাখতে পারেন

this.ControlBox = false;

এবং this.Text = " "এটির মতো করে তৈরি করতে সাদা স্থান যুক্ত করতে ভুলবেন না

এখানে চিত্র বর্ণনা লিখুন


2
এটাই আমার দরকার। ধন্যবাদ।
কোসমাস

2
এটি সঠিক নয়। সরাসরি ওপির প্রশ্ন থেকে: আমি ব্যবহার করতে পারি নাControlBox = false
মার্টিন

8

যদি আপনি সত্যিই এটি লুকিয়ে রাখতে চান, যেমন "দৃশ্যমান নয়", তবে আপনাকে সম্ভবত সীমানাহীন ফর্ম তৈরি করতে হবে এবং ক্যাপশনের উপাদানগুলি নিজেই আঁকতে হবে। ভিজুয়াল স্টাইলস লাইব্রেরিতে উইন্ডোজ উপাদানসমূহ উপলব্ধ। ফর্মটি পুনরায় আকার দেওয়ার বা ক্যাপশন বারটি ধরে ফর্মটি সরিয়ে দেওয়ার কার্যকারিতাটিতে আপনাকে আবার যুক্ত করতে হবে। কোণে সিস্টেম মেনু উল্লেখ না।

বেশিরভাগ ক্ষেত্রে, "ক্লোজ" বোতামটি উপলভ্য না হওয়া যুক্তিসঙ্গত করা শক্ত, বিশেষত যখন আপনি ক্ষুদ্রতর ক্ষমতা সহ একটি মডেল ফর্ম চান। একটি মডেল ফর্ম হ্রাস করা আসলেই কোনও বুদ্ধিমান নয়।


2

আপনার ফর্মের বৈশিষ্ট্যগুলিতে 'কন্ট্রোল বাক্স' সেট করুন = মিথ্যা তবে এটি ন্যূনতম এবং ম্যাক্সিমাইজও গোপন করবে।


1

ভাল আপনি প্রোপার্টি বিভাগ থেকে ফর্মবর্ডারস্টাইল পরিবর্তন করে বা প্রোগ্রামারোগ্যভাবে কনস্ট্রাক্টর ব্যবহার করে ঘনিষ্ঠ বোতামটি আড়াল করতে পারেন:

public Form1()
{
InitializeComponent();
this.FormBorderStyle = FormBorderStyle.None;
}

তারপরে আপনি অ্যাপ্লিকেশনটি থেকে বেরিয়ে আসার জন্য একটি মেনু স্ট্রিপ আইটেম তৈরি করুন।

চিয়ার্স

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