উইনফোর্মে কোনও পাঠ্যবক্স থেকে ফোকাস কীভাবে সরিয়ে নেওয়া যায়?


110

আমার বেশ কয়েকটি পাঠ্যবক্স থেকে ফোকাস সরিয়ে নেওয়া দরকার। আমি ব্যবহার করার চেষ্টা করেছি:

textBox1.Focused = false;

এর ReadOnlyসম্পত্তির মানtrue

আমি তখন ফর্মটিতে ফোকাস সেট করার চেষ্টা করেছি, যাতে এটি সমস্ত টেক্সটবক্স থেকে অপসারণ করা যায়, তবে এটি কাজ করতে ব্যর্থ হয়:

this.Focus();

এবং ফাংশন ফিরে false পাঠ্যবক্সটি নির্বাচন করা হলে ।

সুতরাং, আমি কীভাবে পাঠ্যবক্স থেকে ফোকাসটি সরিয়ে দেব?

উত্তর:


113

ফোকাসটি এতে সরানোর জন্য আপনার আরও কিছু ফোকাসযোগ্য নিয়ন্ত্রণ দরকার।

নোট করুন যে আপনি একটি লেবেলে ফোকাস সেট করতে পারেন। আপনি [ট্যাব] কীটি এটি পরবর্তী স্থানে নিয়ে যেতে চান তা বিবেচনা করতে চাইতে পারেন।

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


ধন্যবাদ; আমি কেবলমাত্র একটি লেবেলে ফোকাস করার চেষ্টা করেছি এবং এখন পাঠ্যবক্সটি ফোকাসে পরিণত হয়েছে। দেখে মনে হচ্ছে আপনি কোনও কারণে কোনও ফর্মের দিকে ফোকাস করতে পারবেন না।
কলম রজার্স

7
ধারক নিয়ন্ত্রণগুলি (ফর্ম, প্যানেল) তাদের প্রথম শিশু নিয়ন্ত্রণে ফোকাসটি দেবে।
হেন্ক হোলটারম্যান

দুর্দান্ত পরামর্শ। এটি আমার সমস্যার সমাধান করেছে। আমি নিজেই ফর্মটির বিপরীতে কীপ্রেস ব্যবহার করছি এবং বেশ কয়েকটি বোতাম রয়েছে is বোতাম-ক্লিকের পরে কোনও লেবেলে ফোকাস করা আমার সমস্যার সমাধান করে। অনেক ধন্যবাদ!
joelc

62

লেবেলে ফোকাস করা আমার পক্ষে কার্যকর হয়নি, কিছু label1.Focus()ঠিক মতো করছেন ? ফর্মটি লোড করার সময় পাঠ্যবাক্সটিতে এখনও ফোকাস রয়েছে, তবে ভেলোসিরাপেক্টর জবাব দেওয়ার চেষ্টা করে আমার পক্ষে কাজ করেছেন, লেবেলে ফর্মটির সক্রিয় নিয়ন্ত্রণটি সেট করে:

private void Form1_Load(object sender, EventArgs e)  
{ 
    this.ActiveControl = label1;       
}

7
আমি আশা করি আপনি মিলিয়ন তীর আপ দিতে পারে। লোকেরা যে পরামর্শ দিয়েছিল আমি তার সমস্ত কিছুই চেষ্টা করেছিলাম, এটিই কেবল কাজ করে। কোনও কারণে, পাঠ্যবক্স সর্বদাই ফোকাস চুরি করে ...
এলাদায়ানাই

3
এটি প্যানেলের মতো ধারক নিয়ন্ত্রণের জন্যও কাজ করে। আমি কেবল ফোকাসটি সম্পূর্ণরূপে সরাতে চেয়েছিলাম এবং এটি কার্যকর হয়েছিল:this.ActiveControl = panelOnMyForm;
টিম শেমলেটার

52

আপনি নিম্নলিখিত কোড যুক্ত করতে পারেন:

this.ActiveControl = null;  //this = form

7
আমি বিশ্বাস করি এটিই সেরা উত্তর। "ফোকাস" এর মতো অনেকগুলি পদ্ধতি যেমন আপনি এমএসডিএন পড়েন, নিয়ন্ত্রণ ডিজাইনারদের নিম্ন স্তরের পদ্ধতি হিসাবে তালিকাভুক্ত করা হয়। আপনি যদি চান যে অন্য সমস্ত কিছু "নির্বাচিত না হয়ে" থাকুক এটি এটিকে সবচেয়ে সহজ পদ্ধতির বলে মনে হয়, ভাল, এটি কেবল একটি ছোট লাইন।
রোস্তভ

1
মাইক্রোসফ্ট এই সম্পত্তি প্রথম স্থানে যুক্ত করার অর্ধেক কারণ হতে পারে।
Panzercrisis

এটি সবচেয়ে মার্জিত সমাধানের মতো বলে মনে হচ্ছে এটি আমার ক্ষেত্রে নিখুঁতভাবে কাজ করেছে।
নেটওয়েভ

আমি সত্যিই এই উত্তরটি কাজ করতে চাই কারণ এটি ঠিক যেমনটি হওয়া উচিত ঠিক তেমনটি মনে হয় তবে আমার ক্ষেত্রে এটি কার্যকর হয়নি কারণ এটি ছাড়ার ইভেন্টটিকে ট্রিগার করে যখন এটি বৈধকরণ / যাচাইকরণের ইভেন্টগুলিকে ট্রিগার করে না।
রাইস জোন্স

32

পাঠ্যবক্সটি অক্ষম ও সক্ষম করার চেষ্টা করুন।


5
এরই মধ্যে এটি স্বয়ংক্রিয়ভাবে ট্যাব তালিকার পরবর্তী নিয়ন্ত্রণ নির্বাচন করে বলে এটি বেশ চটজলদি কাজ করে।
নিক

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

আমি কীভাবে এটি অক্ষম করতে পারি?
মাইগুয়েল্প্পন

1
@ মিগুয়েল্প্পেন textBox1.Enabled = false;আপনার পাঠ্যবক্সটি অক্ষম করবে। এবং এটিকে সেট করা এটিকে trueপুনরায় সক্ষম করবে।
রক্তিম বিশ্বাস

24

আপনি পছন্দ মত ফর্ম activecontrolসম্পত্তি সেট করতে nullপারেন

ActiveControl = null;

7
আমি আশা করি লোকেরা এই সমস্ত উপায়ে স্ক্রোল করে নেবে এবং কেবল উত্তর হিসাবে চিহ্নিত
ওয়ার্কআউন্ডটি

এখনও এই দিনের সেরা উত্তর, এখানে বন্ধু, আমার উঁচুতে নিন।
xoxel

8

Focusইনপুট ফোকাস সেট করে, সুতরাং ফর্মটিতে সেট করা কাজ করবে না কারণ ফর্মগুলি ইনপুট গ্রহণ করে না। ফর্মটির ActiveControlসম্পত্তি অন্য একটি নিয়ন্ত্রণে সেট করার চেষ্টা করুন । আপনি Selectএকটি নির্দিষ্ট নিয়ন্ত্রণ SelectNextControlনির্বাচন করতে বা ট্যাব ক্রমের পরবর্তী নিয়ন্ত্রণ নির্বাচন করতেও ব্যবহার করতে পারেন ।


1
এখানে অন্য সব কিছুর চেষ্টা Select()করেছিলাম এবং আমার জন্য কাজ করেছেন।
ডেরেক ডাব্লু

8

আর একবার চেষ্টা কর:

প্রথমে ট্যাব অর্ডার সেট আপ করুন।

তারপরে ফর্ম লোড ইভেন্টে আমরা অ্যাপ্লিকেশনটিতে একটি ট্যাব কী প্রেসক্রমেটিকভাবে প্রেরণ করতে পারি। সুতরাং সেই অ্যাপ্লিকেশনটি ট্যাব ক্রমের 1 ম কনটোলকে ফোকাস দেবে।

ফর্ম লোড এমনকি এই লাইন লিখুন।

SendKeys.Send("{TAB}");

এটি আমার পক্ষে কাজ করেছিল।


4

এই পোস্টটি আমাকে এটি করতে নেতৃত্ব দেয়:

ActiveControl = null;

এটি আমাকে অন্যান্য নিয়ন্ত্রণ বাদাম ছাড়াই শীর্ষ স্তরে সমস্ত কীবোর্ড ইনপুট ক্যাপচার করতে দেয়।


3

আমি একটি ভাল বিকল্প খুঁজে পেয়েছি! অন্য কোনও বিষয়ে ফোকাস সেট না করেই এটি আমার পক্ষে সবচেয়ে ভাল কাজ করে।

চেষ্টা কর:

private void richTextBox_KeyDown(object sender, KeyEventArgs e)
{    
    e.SuppressKeyPress = true;
}

3

আমি আমার কাস্টম নিয়ন্ত্রণে এটি তৈরি করেছি, আমি এটি অনফোকাস () দ্বারা সম্পন্ন করেছি

this.Parent.Focus();

সুতরাং যদি টেক্সবক্স ফোকাস করে - এটি তাত্ক্ষণিকভাবে পাঠ্যবাক্সের প্যারেন্টকে ফর্ম করে (ফর্ম, বা প্যানেল ...) আপনি যদি কাস্টম নিয়ন্ত্রণে এটি তৈরি করতে চান তবে এটি ভাল বিকল্প।


2

দেখে মনে হচ্ছে যে অন্য কোনও উপাদানগুলিতে আমাকে ফোকাস সেট করতে হবে না। একটি উইন্ডোজ ফোন 7 অ্যাপ্লিকেশনটিতে, আমি একটি পাঠ্যবক্সের ফোকাসটি আনসেট করতে ফোকাস পদ্ধতিটি ব্যবহার করছি।

নিম্নলিখিত কমান্ডটি দেওয়া কিছুতেই ফোকাস সেট করবে:

void SearchBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
    if (e.Key == Key.Enter)
    {
        Focus();
    }
}

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

এটি আমার পক্ষে কাজ করেছে, তবে কেন জানি এটি আপনার পক্ষে কার্যকর হয়নি: /


2

একটি সহজ সমাধান হ'ল ফোকাস হ্রাস করা, কেবল নিজের ক্লাস তৈরি করুন:

public class ViewOnlyTextBox : System.Windows.Forms.TextBox {
    // constants for the message sending
    const int WM_SETFOCUS = 0x0007;
    const int WM_KILLFOCUS = 0x0008;

    protected override void WndProc(ref Message m) {
        if(m.Msg == WM_SETFOCUS) m.Msg = WM_KILLFOCUS;

        base.WndProc (ref m);
    }
}

ঠিক আমি যে ধরণের সমাধান খুঁজছিলাম। ধন্যবাদ!
লেফটিকডার

1
    //using System;
    //using System.Collections.Generic;
    //using System.Linq;

    private void Form1_Load(object sender, EventArgs e)
    {
        FocusOnOtherControl(Controls.Cast<Control>(), button1);
    }

    private void FocusOnOtherControl<T>(IEnumerable<T> controls, Control focusOnMe) where T : Control
    {
        foreach (var control in controls)
        {
            if (control.GetType().Equals(typeof(TextBox)))
            {
                control.TabStop = false;
                control.LostFocus += new EventHandler((object sender, EventArgs e) =>
                {                     
                    focusOnMe.Focus();
                });
            }
        }
    }

0

আমি এর চারপাশে যাবার উপায়টি হ'ল আমার সমস্ত উইনফর্ম নিয়ন্ত্রণ। আমি সমস্ত লেবেলগুলি এবং অ-নির্বাচনকারী উইনফর্ম নিয়ন্ত্রণগুলিকে ট্যাব অর্ডার 0 হিসাবে তৈরি করি, তারপরে আমার প্রথম নিয়ন্ত্রণটি ট্যাব অর্ডার 2 হিসাবে এবং তারপরে প্রতিটি বাছাইযোগ্য নিয়ন্ত্রণের ক্রম 1 দ্বারা বাড়িয়ে দেওয়া হয়, তাই 3, 4, 5 ইত্যাদি ...

এইভাবে, যখন আমার উইনফর্মগুলি শুরু হবে, প্রথম পাঠ্যবক্সে ফোকাস নেই!


0

আপনি দুটি পদ্ধতি দ্বারা এটি করতে পারেন

  • কেবলমাত্র কাঙ্ক্ষিত পাঠ্যবক্সের "ট্যাবস্টপ" বৈশিষ্ট্যগুলি মিথ্যা করুন এখন আপনার কাছে একটি পাঠ্য ক্ষেত্র থাকলেও এটি ফোকাস করবে না
  • দুটি টেক্সট বাক্স টেনে আনুন

    1. এমন কোনও দৃশ্যমান করুন যা আপনি ফোকাস চান না যা পাঠ্য বাক্স 1
    2. ২ য়টিকে অদৃশ্য করুন এবং সেই পাঠ্য ক্ষেত্রের বৈশিষ্ট্যে যান এবং নির্বাচন করুন select

পাঠ্যবক্স 2 এর 0 টিতে ট্যাবিনডেক্সের মান

  1. এবং আপনার পাঠ্যবক্স 1 এর 1 টি ট্যাবডেক্স নির্বাচন করুন এখন এটি পাঠ্যবক্স 1 এ ফোকাস করবে না

0

যদি আপনি চান সমস্ত অপটিকাল প্রভাবটি যে পাঠ্যবাক্সটির সমস্ত বিষয়বস্তুতে নীল নির্বাচন নেই, কেবল কোনও পাঠ্য নির্বাচন করুন:

textBox_Log.SelectionStart = 0;
textBox_Log.SelectionLength = 0;
textBox_Log.Select();

এর পরে, সাথে সামগ্রী যুক্ত করার সময় .Text += "..."কোনও নীল নির্বাচন দেখানো হবে না।


0

দয়া করে সেট TabStopকরার চেষ্টা করুনFalseমনোযোগ না দেওয়া আপনার ভিউ নিয়ন্ত্রণের জন্য ।

যেমন:

txtEmpID.TabStop = false;

-1

ফর্ম বা ব্যবহারকারীকন্ট্রোল্টটিতে টেক্সটবক্স রচনাটি ধারণ করে

SetStyle(ControlStyles.Selectable, false);

ইনিশিয়ালকম্পোনেন্ট () পরে; সূত্র: https://stackoverflow.com/a/4811938/5750078

উদাহরণ:

public partial class Main : UserControl
{

    public Main()
    {
        InitializeComponent();
        SetStyle(ControlStyles.Selectable, false);
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.