حرکت دادن scroll یک panel
سلام
به یه مشکل عجیب خوردم که هر کاری می کنم درست نمی شه نمی دونم چه کار کنم و اون اینه که وقتی می خوام scroll یک panel رو در رویداد کلیک یک باتن کنترل کنم و مثلا به پایین بیارم دفعه اول انجام می دهد ولی با دوباره زدن کلید به جای اینکه پایین تر بیاد به همون حالت اول بر می گرده در صورتی که کدی من بهش دادم فقط می تونه پایین بیاره و بالا نمی تونه ببره
من کد این قسمت رو می زارم تا اگه کسی می تونه کمکم کنه ممنون
panel1.AutoScrollPosition = newPoint(panel1.AutoScrollPosition.X, panel1.AutoScrollPosition.Y + 20);
نقل قول: حرکت دادن scroll یک panel
ببین این کد به دردت میخوره:
int y = panel1.AutoScrollPosition.Y == panel1.VerticalScroll.Maximum ? -20 : panel1.VerticalScroll.Value;
panel1.AutoScrollPosition = new Point(panel1.AutoScrollPosition.X, y + 20);
نقل قول: حرکت دادن scroll یک panel
با سلام
خیلی ممنون از کدتون soheilajoon، این کدتون درست کار می کنه
ولی یک سوال برام پیش اومد و اون اینکه می تونید بگویید این کد چه کار می کنه؟ یه کمی گیج شدم
باز هم ممنون
نقل قول: حرکت دادن scroll یک panel
خط اول برابر کد زیره :
if (panel1.AutoScrollPosition.Y == panel1.VerticalScroll.Maximum)
y = -20;
else
y = panel1.VerticalScroll.Value;
if توی این کد مکان Y رو با بیشترین حد Scroll مقایسه می کنه . . . .
البته این خط رو برای این گذاشتم که وقتی به پایین Scroll رسید دوباره برگرده بالا ولی نیمه کاره موند!! :بامزه:
بهتره از این کد استفاده کنید :
int y = panel1.VerticalScroll.Value;
panel1.AutoScrollPosition = new Point(panel1.AutoScrollPosition.X, y + 20);
اینجا هم خط اولش مقدار Position عمودی Panel1 رو توی متغیر Y میزاره ,
خط بعد هم Y+20 میکنه , همین. :لبخندساده:
نقل قول: حرکت دادن scroll یک panel
سلامی دوباره
مثل اینکه مشکلات این scroll پایانی نداره
دوباره یک مشکل دیگه که نمی دونم چه کارش کنم هر کاری هم کردم نتونستم اون رو حل کنم
من یک picturebox توی یک panel دارم که چون عکس های نمایش داده شده تو برنامه بزرگه panel ، از دو طرف scroll می خوره که برای راحتی کاربر می خوام مثل برنامه acrobat کاربر بتونه با موس اون رو چپ و راست کنه و بتونه بالا و پایین ببره که اون کد بالایی برای برای کلید وسط موس به کار بردم و درست کار کرد (با تشکر از soheilajoon ) اما می خواهم وقتی کاربر موس رو می گیره و این طرف و اون طرف می بره panel هم درست هماهنگ با اون بره تا کاربر بتونه عکس رو کامل ببینه ولی نتونستم
فقط یک کد تو رویداد move موس همراه با mouse down و up نوشتم که برعکس عمل می کنه و هر کاری می کنم برعکس(درست) نمی شه کد رو می زارم تا اگه کسی می دونه کمکم کنه
باز هم ممنون
کد رویداد mousemove مربوط به picturebox
if (mouse == 1)
{
if (e.X != mx || e.Y != my)
{
int i = (e.X - mx);
int j = (e.Y - my);
panel1.AutoScrollPosition = newPoint(panel1.AutoScrollPosition.X + i, panel1.AutoScrollPosition.Y + j);
}
}
mx و my در رویداد mousdown مقدار دهی می شه همچنین متغیر mouse در رویداد mousedown مقدار 1 و در رویداد mouseup مقدار 0 می گیره
باز هم ممنون
نقل قول: حرکت دادن scroll یک panel
نقل قول: حرکت دادن scroll یک panel
باز هم سلام
کسی نمی تونه کمکم کنه
نقل قول: حرکت دادن scroll یک panel
کاش یه کم بهتر توضیح می دادی می خوای چیکار کنی!
منظورت از :
" می خواهم وقتی کاربر موس رو می گیره و این طرف و اون طرف می بره panel هم درست هماهنگ با اون بره تا کاربر بتونه عکس رو کامل ببینه "
چیه؟
نقل قول: حرکت دادن scroll یک panel
با سلام
ببخشید چند روز نتونستم بیام ولی مشکلم همچنان باقی است
و اما در مورد توضیح اینکه برنامه من عکس های زیادی که هر کدوم از سایز بزرگی برخوردار هست را نمایش می دهد که برای نمایش آن ها از picturebox داخل یک panel برای تسهیل در scroll خوردن و کنترل بهتر آن استفاده می کنم و این رو هم بگم که باید عکس ها بزرگ نمایش داده بشند و حتی قابلیت zoom رو هم براش پیش بینی کرده ام
حالا می خوام کاربر بتونه با استفاده از موس عکس رو این طرف و آن طرف کنه که تا حدودی هم تونستم
یعنی اینکه می خوام کاربر با کلیک کردن و جابه جا کردن راحت تمام عکس رو ببینه(مثل خیلی از برنامه ها همچون acrobat reader که با گرفتن صفحه می تونند این طرف و آن طرف برند
و کدی هم که دارم برعکس عمل می کنه و نتونستم با هیچ عملی آن را تصحیح کنم در واقع این کد کارامد نیست
حالا اگه راه حلی دارید ممنون می شم بگویید
نقل قول: حرکت دادن scroll یک panel
سلام
آقا من دارم همین طور وقت رو از دست می دم و هر کاری هم می کنم جوابی برای سوالم پیدا نمی کنم این تاپیک هم که به نتیجه نرسیده هر چی هم در سایت جستجو کردم جوابی نیافتم دیگه نمی دونم چه کار کنم از مدیر خواهش می کنم کمک کنند دیگه وقت زیادی ندارم
نقل قول: حرکت دادن scroll یک panel
ببین این کد کمکت می کنه :
if (mouse == 1)
{
if (e.X != mx || e.Y != my)
{
int i = (e.X - mx);
int j = (e.Y - my);
panel1.AutoScrollPosition = new Point(panel1.HorizontalScroll.Value - i, panel1.VerticalScroll.Value - j);
}
}