PDA

View Full Version : حرکت دادن اسکرول بار با کدنویسی



hamid_isf_1360
سه شنبه 01 خرداد 1386, 14:38 عصر
سلام
کسی می دون چطوری می شه با کدنویسی حرکت اسرول بار شی richBox را تحت کنترل بگیرم
و با استفاده از اون متن درونش را پایین و بالا ببرم.
دوستان تاکید می کنم که من قصد دارم مستقیم به خود اسکرول این شی فرمان بدم
نه که بیام و از موقعیت متن درون ان استفاده کنم و اسکرولش را تغییر مکان بدم
یا حق.

PC2st
سه شنبه 01 خرداد 1386, 15:10 عصر
یک راهش بردن Focus به richTextBox و استفاده از متد SendKeys.Send برای فرستن کلید مورد نظر است. یعنی مثلا برای کلید PageDown که Scroll رو به اندازه یک صفحه به پائین میبره :


this.richTextBox1.Focus();
SendKeys.Send( "{PGDN}" );

کد بالا زمانی کار میکنه که فرم نمایش داده شده باشه.

__H2__
سه شنبه 01 خرداد 1386, 15:14 عصر
سلام
احتمالاً اگر نگاه دقیق تری بیاندازم چیزی پیدا میکنم، ولی در زمان ناصرالدین شاه یک بار میخواستم همچین کارهایی بکنم و مشکلم با مشخصه هاسس که مربوط به Select متن بود حل شد، مثلاً کمی با SelectionStart و SelectionLength اگر کلنجار بروید احتمالاً مشکلتان حل میشود و به صورت خودکار کنترلر اسکرول میشود به متن مورد نظر. انشا ا... !!!!

hamid_isf_1360
سه شنبه 01 خرداد 1386, 15:25 عصر
تاکید می کنم نمی خوام از روش SelectionStart یا به طور کلی از طریق متن این کار را انجام بدم
بلکه می خوام مستقیم به شی اسکرولش کد بدم



با sendKeys هم می شه ولی را دیگه ای وجود نداره که بشه موقعیت جاری اسکرول را یه جوری گرفت بعد به موقعیت خاصی اونو بفرستیم

کسی ایده ای نداره

کسی برای این کار چاره ای نداره

ghafoori
چهارشنبه 02 خرداد 1386, 07:53 صبح
دوست عزیز با این کد ها من تونستم فرم را اسکرول کنم حالا rich را نمی دونم


this.VerticalScroll.Value += 50
this.HorizontalScroll.Value += 50

hamid_isf_1360
چهارشنبه 02 خرداد 1386, 11:42 صبح
نه از این را نمی شه

Keramatifar
چهارشنبه 02 خرداد 1386, 15:12 عصر
دوست عزیز
میتونی با مطالعه این فانکشن به چیزی که می خوای برسی:



protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_VSCROLL:
base.WndProc(ref m);
if ((m.WParam.ToInt32() & 0xffff) == SB_THUMBTRACK)
{
OnVScroll(EventArgs.Empty);
}
if ((m.WParam.ToInt32() & 0xffff) == SB_THUMBPOSITION)
{
OnVScroll(EventArgs.Empty);
}
break;

case WM_HSCROLL:
base.WndProc(ref m);
if ((m.WParam.ToInt32() & 0xffff) == SB_THUMBTRACK)
{
OnHScroll(EventArgs.Empty);
}
if ((m.WParam.ToInt32() & 0xffff) == SB_THUMBPOSITION)
{
OnHScroll(EventArgs.Empty);
}
break;
default:
base.WndProc(ref m);
break;
}
}

hamid_isf_1360
پنج شنبه 03 خرداد 1386, 10:52 صبح
سلام
می شه بیشتر راهنمایی کنید که باید چطوری استفاده کنم
یا اگه زحمتی نیست نمونه سورس کدی که نوشتید را بزارید توی سایت
صمیمانه متشکرم

Keramatifar
پنج شنبه 03 خرداد 1386, 12:20 عصر
دوست عزیز
این فانکشنی که برات نوشتم دقیقا داره کنترل Scroll Bar ها رو در دست میگیره با کمی تغییر در این کد می تونی کاری که می خوای رو انجام بدی

hamid_isf_1360
شنبه 30 تیر 1386, 13:37 عصر
سلام
اگه زحمت نیست می شه یه سورس برام بفرستید که با همین روشی که گفتید
مثلا یه ریچ باکس را بتونیم اسکرول ها را دست بگیریم
مثلا با فشار یه دکمه یه واحد بره پایین
واقعا ممنونم اگه برام سورس بفرستید

newgoldenman
یک شنبه 31 تیر 1386, 21:28 عصر
چه سوال و بحث جالبی، منم مشتاقم یاد بگیرم این کار رو (:

hamid_isf_1360
دوشنبه 01 مرداد 1386, 00:36 صبح
wisg master عزیز :
ما از شما تقاضای سورس می کینم
ممنون می شم

hamid_isf_1360
پنج شنبه 04 مرداد 1386, 07:58 صبح
کسی نیست کمک کنه

vilkhani
پنج شنبه 12 مهر 1386, 15:16 عصر
شما میتونی بعد از نمایش متن از کد زیر استفاده کنی


richTextBox.ScrollToCaret();

hdv212
پنج شنبه 12 مهر 1386, 21:22 عصر
vilkhani عزیز کد شما فقط ScrollBar رو به Current Position میبره، برای کنترل ScrollBar به این لینک (http://www.codeproject.com/csharp/scrollbar_position.asp?df=100&forumid=194048&exp=0&select=1151240) مراجعه کنید.