PDA

View Full Version : سوال: استفاده از SendKey در WPF



davoodrm666_666
یک شنبه 05 دی 1389, 09:16 صبح
سلام
آقا من مي خوام وقتي يك Window لود ميشه 10 تا Tab زده بشه چطوري اينكار رو انجام بدم

mehdi.mousavi
یک شنبه 05 دی 1389, 10:51 صبح
سلام آقا من مي خوام وقتي يك Window لود ميشه 10 تا Tab زده بشه چطوري اينكار رو انجام بدم

سلام.
لطفا به این آدرس (http://social.msdn.microsoft.com/forums/en-US/wpf/thread/a80296be-e810-449a-843e-bba4a31c1b0e/) رجوع کتید.

موفق باشید.

پاورقی: این پروژه Open Source (http://inputsimulator.codeplex.com/) نیز روش انجام اینکار در WPF رو بهتون نشون میده.

رضا عربلو
یک شنبه 05 دی 1389, 22:17 عصر
با 10 تا tab زدن focus قراره رو کدوم کنترل بره. متد Focus اون کنترل را فرا بخوان.

davoodrm666_666
دوشنبه 06 دی 1389, 07:53 صبح
با 10 تا tab زدن focus قراره رو کدوم کنترل بره. متد Focus اون کنترل را فرا بخوان.

مي خوام focus رو روي يك كنترل كه Uielement نيست ببرم به همين خاطر متد Focus نداره دوست عزيز

رضا عربلو
دوشنبه 06 دی 1389, 10:10 صبح
مي خوام focus رو روي يك كنترل كه Uielement نيست ببرم به همين خاطر متد Focus نداره دوست عزيز
دوست گرام. 10 بار کلید tab را زدن روشی بسیار اشتباه است. اگر ui را بخوای تغییر بدی مدام بایستی چک کنی که چند تا tab باید بزنی تا به اون برسی. ثانياً مشکل flickering هم خاهی داشت.
بهتره از روش های استاندارد استفاده کنی. یعنی یکی از سه روش
مثلاً:


Keyboard.Focus(TextBox1);

ویا


DependencyObject focusScope = FocusManager.GetFocusScope(this);
if (FocusManager.GetFocusedElement(focusScope) == null)
{
FocusManager.SetFocusedElement(focusScope, this);
}
و یا


TextBox1.Focus();

davoodrm666_666
سه شنبه 07 دی 1389, 19:46 عصر
دوست گرام. 10 بار کلید tab را زدن روشی بسیار اشتباه است. اگر ui را بخوای تغییر بدی مدام بایستی چک کنی که چند تا tab باید بزنی تا به اون برسی. ثانياً مشکل flickering هم خاهی داشت.
بهتره از روش های استاندارد استفاده کنی. یعنی یکی از سه روش
مثلاً:


Keyboard.Focus(TextBox1);

ویا


DependencyObject focusScope = FocusManager.GetFocusScope(this);
if (FocusManager.GetFocusedElement(focusScope) == null)
{
FocusManager.SetFocusedElement(focusScope, this);
}
و یا


TextBox1.Focus();


تمام روش های بالا برای کنترل های UIELEMENT کار می کنه مثل textbox - button و ... اما کنترل من DataFilter از مجموعه Telerik است که خود این کنترل متد focus داره اما من می خوام focus به قسمت خاصی از این کنترل به نام filter Discriptor بره که این جناب فیلتر discriptor چون یک کنترل درون زا تشریف داره به عبارتی UIELEMENT نیست نمیشه روش focus کرد به عبارتی مجبورم
http://www.telerik.com/community/forums/wpf/data-filter/focus-on-filterdescriptor.aspx
و این که گفتی یعنی چه! ((flickering))

رضا عربلو
سه شنبه 07 دی 1389, 21:42 عصر
flickering یعنی چشمک زدن.
اون لینکی هم که دادی می گه Filter Descriptor یک UIElement نیست تا بشه بهش فوکوس کرد. در واقع اونجوری که online help ش را دیدم از Telerik.Windows.Data به ارث برده می شود به نظر هیچ شکل ويژوالي ندارد و کلاسی برای کار با کنترل فیلتر DataFilter ات است. به نظر من در نام گذاشتن کنترلی که می خوای بهش focus کنی اشتباه می کنی و اونی که می خوای filter descriptor نیست.
ابزاری به نام snoop در codeplex است که بهت کمک می کنه درون کنترل ها را ببینی و جاسوسی کنی. ابزار بسیار پرکاربردی. یک DataFiletr بر روی یک پنجره قرار بده و با snoop جاسوسی اش را بکن. ببین کنترل مورد نظرت چیه.

http://barnamenevis.org/showthread.php?188534-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DA%A9%D8%A7%D9%85%D9%BE%D8%A7%D9%86%D9%86%D8%AA-%D9%87%D8%A7-%D9%88-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1-WPF&p=1182419&viewfull=1#post1182419

davoodrm666_666
چهارشنبه 08 دی 1389, 07:47 صبح
اين مشكل كه گفتيد پيش نيومد ولي filter descriptor درسته چون اگر به لينك خود telerik توجه كنيد گفته filter descriptor يك Uielement نيست نه datafilter به هر حال من مشكلم حل شد ممنون
64240