PDA

View Full Version : تغییر سایز اسکرول بار برای برنامه های تاچ اسکرین



__MAHNAZ__
دوشنبه 07 خرداد 1397, 10:06 صبح
سلام
من یه برنامه سی شارپ با ویندوز فرم نوشتم که قرار به صورت تاچ اسکرین ازش استفاده بشه. تو برنامه یه پنل وجود داره که در صورت لزوم قراره اسکرول بشه . ولی به خاطر باریک بودن اسکرول بار ها نمیشه از اونها به راحتی استفاده کرد.
چطور میشه سایز اسکرول بارها رو تغییر داد و انها رو کمی پهن تر کرد؟

danialafshari
دوشنبه 07 خرداد 1397, 10:39 صبح
با سلام
شما میتونید از کامپوننت ScrollBar دات نت که توی Toolbox هست استفاده کنید و در رویداد Scroll کد نویسیش کنید
برای فرم:

//عمودی
private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
this.VerticalScroll.Value = vScrollBar1.Value;
}
//افقی
private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
this.HorizontalScroll.Value = hScrollBar1.Value;
}

موفق باشید

__MAHNAZ__
دوشنبه 07 خرداد 1397, 10:54 صبح
من کل فرم رو نمیخوام اسکرول کنم فقط یک پنل هست که اندازه افقی اون ثابت هست و فقط به صورت عمود اسکرول میشه. کد زیر رو برای اسکرول بار نوشتم ولی ارتباطش با پنل برقرار نشد و با حرکت اسکرول پنل اسکرول نمیشه:افسرده:

private void vScrollBar2_Scroll(object sender, ScrollEventArgs e)
{
PicturePanel.VerticalScroll.Value = vScrollBar1.Value;
}
//---------------------------------------------------------------------------------------------------------------------


اشکال کارم کجاست؟

danialafshari
دوشنبه 07 خرداد 1397, 11:05 صبح
بخاطر این هست که شما دارید برای vScrollBar2 مینویسید ولی توی کد Value روی vScrollBar1 تنظیم کردید!
اصلاحش کنید

__MAHNAZ__
دوشنبه 07 خرداد 1397, 11:39 صبح
:لبخند::لبخند::لبخند::لبخند:: بخند:درست میفرمایید اصلاحش کردم. الان یه مشکل دیگه داره . پنل اسکرول میشه ولی پرش داره موقع حرکت.:افسرده:

danialafshari
سه شنبه 08 خرداد 1397, 02:48 صبح
:لبخند::لبخند::لبخند::لبخند:: بخند:درست میفرمایید اصلاحش کردم. الان یه مشکل دیگه داره . پنل اسکرول میشه ولی پرش داره موقع حرکت.:افسرده:
با سلام
شما هم برنامه نویسید کمی تلاش کنید
پرش بخاطر این هست چون اندازه اسکرول با محتوای پنل همخوانی نداره
کد زیر رو نوشتم امیدوارم کمکتون کنه
private void Form1_Shown(object sender, EventArgs e)
{
vScrollBar1.Size = new Size(40, vScrollBar1.Size.Height);
panel1.ScrollControlIntoView(vScrollBar1);
panel1.AutoScrollPosition = vScrollBar1.AutoScrollOffset;
vScrollBar1.LargeChange = panel1.VerticalScroll.LargeChange-60;
}

private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
vScrollBar1.Scroll += (o, arg) => { panel1.VerticalScroll.Value = vScrollBar1.Value; };
}

اون 60 تقریبی و بازی با ریاضی هست اگه لازم بود کد رو نسبت به کارتون شخصی سازی کنید
فقط حتماً برای پنل هایی استفاده کنید که اسکرولشون حتمی است وگرنه با خطا مواجهه میشید
موفق باشید