কীভাবে TextBox
ডাব্লুপিএফ- তে কোনও উপাদানের উপর ফোকাস সেট করা যায়
আমার এই কোডটি রয়েছে:
txtCompanyID.Focusable = true;
txtCompanyID.Focus();
...কিন্তু এটা কাজ করছে না.
কোন ধারণা?
কীভাবে TextBox
ডাব্লুপিএফ- তে কোনও উপাদানের উপর ফোকাস সেট করা যায়
আমার এই কোডটি রয়েছে:
txtCompanyID.Focusable = true;
txtCompanyID.Focus();
...কিন্তু এটা কাজ করছে না.
কোন ধারণা?
উত্তর:
এক্সএএমএল-তে:
<StackPanel FocusManager.FocusedElement="{Binding ElementName=Box}">
<TextBox Name="Box" />
</StackPanel>
কেউ এখনও পর্যন্ত ব্যাখ্যা করেন নি কেন প্রশ্নে কোডটি কাজ করে না। আমার অনুমান যে কোডটি উইন্ডো কনস্ট্রাক্টরে রাখা হয়েছিল। তবে এই মুহুর্তে ফোকাস সেট করা খুব তাড়াতাড়ি। উইন্ডোটি ইন্টারঅ্যাকশনের জন্য প্রস্তুত হওয়ার পরে এটি করা উচিত। কোডের জন্য সর্বোত্তম জায়গা হ'ল লোডড ইভেন্ট:
public KonsoleWindow() {
public TestWindow() {
InitializeComponent();
Loaded += TestWindow_Loaded;
}
private void TestWindow_Loaded(object sender, RoutedEventArgs e) {
txtCompanyID.Focus();
}
}
Focus()
জন্য ফোকাসের স্টেট প্যারামিটারের প্রয়োজন - যেমনtxtCompanyId.Focus(FocusState.Keyboard)
ফোকাসম্যানেজ.সেটফোকসড এলিমেন্ট চেষ্টা করুন
FocusManager.SetFocusedElement(parentElement, txtCompanyID)
txtCompanyID.Focusable = true;
Keyboard.Focus(txtCompanyID);
MSDN:
পুরো ডেস্কটপে কেবলমাত্র একটি উপাদান থাকতে পারে যার কীবোর্ড ফোকাস রয়েছে। ডাব্লুপিএফ-তে, যে উপাদানটিতে কীবোর্ড ফোকাস রয়েছে সেগুলির ইস্কিবোর্ডফোকসড সত্য হয়ে থাকবে।
আপনি সেটিং লাইনটি ভেঙে IsKeyboardFocused
সম্পত্তিটির মূল্য পরীক্ষা করতে পারেন । এছাড়াও আপনি সত্যিই সেই লাইনে পৌঁছেছেন কিনা কিনা তা পরীক্ষা করে দেখুন বা তারপরে ফোকাস পেতে আপনি অন্য কিছু উপাদান সেট করেছেন।
এটা চেষ্টা কর : MyTextBox.Focus ( );
আমি স্ট্যাকপ্যানেলের পরিবর্তে গ্রিড ব্যবহার করছিলাম বলে এগুলির কোনওটিই আমার পক্ষে কাজ করেনি।
আমি শেষ পর্যন্ত এই উদাহরণটি পেয়েছি: http://spin.atomicobject.com/2013/03/06/xaml-wpf-textbox-focus/
এবং এটিতে এটি সংশোধিত:
'সংস্থানসমূহ' বিভাগে:
<Style x:Key="FocusTextBox" TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=textBoxName, Path=IsVisible}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=textBoxName}"/>
</DataTrigger>
</Style.Triggers>
</Style>
আমার গ্রিড সংজ্ঞায়:
<Grid Style="{StaticResource FocusTextBox}" />
আপনি যদি অন্য উত্তরের সমাধানটি না পেয়ে থাকেন তবে আমি এইভাবে সমস্যার সমাধান করেছি।
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
TEXTBOX_OBJECT.Focus();
}), System.Windows.Threading.DispatcherPriority.Render);
আমি যা বুঝি সেগুলি থেকে অন্যান্য সমাধানগুলি কাজ করতে পারে না কারণ Focus()
অ্যাপ্লিকেশনটি অন্যান্য উপাদানগুলি রেন্ডার করার আগে কলটি কল করা হয়েছিল।
আর একটি সম্ভাব্য সমাধান হ'ল ফ্রি ডেভ এক্সপ্রেস এমভিভিএম ফ্রেমওয়ার্ক দ্বারা প্রদত্ত ফোকাসবিহার ব্যবহার করা :
<TextBox Text="This control is focused on startup">
<dxmvvm:Interaction.Behaviors>
<dxmvvm:FocusBehavior/>
</dxmvvm:Interaction.Behaviors>
</TextBox>
এটি আপনাকে যখন কোনও লোড লোড করা হয়, যখন কোনও নির্দিষ্ট ইভেন্ট উত্থাপিত হয় বা কোনও সম্পত্তি পরিবর্তন করা হয় তখন কোনও নিয়ন্ত্রণকে ফোকাস করতে দেয়।
কোডের পিছনে আপনি কেবল এটি করে তা অর্জন করতে পারেন।
private void Window_Loaded(object sender, RoutedEventArgs e)
{
txtIndex.Focusable = true;
txtIndex.Focus();
}
দ্রষ্টব্য: উইন্ডোটি লোড হওয়ার আগে এটি কাজ করবে না