نمایش نتایج 1 تا 3 از 3

نام تاپیک: تغییر موقعیت یک کنترل با حرکت موس در سی شارپ

  1. #1
    کاربر جدید آواتار mohammd_df
    تاریخ عضویت
    تیر 1398
    محل زندگی
    تبریز
    سن
    31
    پست
    9

    تغییر موقعیت یک کنترل با حرکت موس در سی شارپ

    سلام. می خوام یه پیکچرباکس روی فرم ایجاد کنم و با حرکت موس ، موقعیت اون هم تغیر کنه.موقعیت پیکچرباکس نسبت به موس توی عکس مشخص شده.
    مشکم اینه که وقتی موقعیت موس داخل یک کنترل یا خود پیکچرباکس قرار میگیره، دیگه پیکچرباکس حرکت نمیکنه. چون موقعیت موس رو گم میکنه
    عکس های ضمیمه عکس های ضمیمه

  2. #2

    نقل قول: تغییر موقعیت یک کنترل با حرکت موس در سی شارپ

    سلام. درست متوجه سوالتون نشدم، اما برای ساخت یک کنترل قابل حرکت میتونید از این لینک استفاده کنید: https://stackoverflow.com/a/1592899/11955706
    فقط در استفاده از SendMessage باید Handle رو با Handle.<اسم کنترل> تعویض کنید

  3. #3
    کاربر جدید آواتار mohammd_df
    تاریخ عضویت
    تیر 1398
    محل زندگی
    تبریز
    سن
    31
    پست
    9

    نقل قول: تغییر موقعیت یک کنترل با حرکت موس در سی شارپ

    خیلی ممنون دوست گرامی .مشکلم حل شد. البته چیزی که من می خوایستم این بود که با یه راست کلیک یه پیکچرباکس نمایش داده بشه و مدام همراه موس حرکت کنه و با کلیک چپ پیکچرباکس رو نمایش نده.سورس کدش رو اینجا میذارم هرکی خواست استفاده کنه

    using System;
    using System.Drawing;
    using System.Windows.Forms;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;


    namespace test1
    {
    class dragcontrol
    {
    public enum direction
    {
    any,
    horizental,
    vertical
    }


    public static void init(Control control, Control container, direction direction=direction.any)
    {

    bool dragging = false;
    Point dragstart = Point.Empty;



    { control.MouseDown += delegate (object sender, MouseEventArgs e)
    {


    dragging = true;
    dragstart = new Point(e.X, e.Y);
    control.Capture = true;
    };
    }
    control.MouseUp += delegate (object sender, MouseEventArgs e)
    {
    if(dragging)
    {
    dragging = false;

    control.Capture = false;


    }

    };
    control.MouseMove += delegate (object sender, MouseEventArgs e)
    {
    if (true)
    {
    if (direction != direction.vertical)
    container.Left = Math.Max(0, e.X + container.Left - dragstart.X);
    if (direction != direction.horizental)
    container.Top = Math.Max(0, e.Y + container.Top - dragstart.Y);




    }


    };


    }
    }
    }
    ///////////////////////////////////////
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlClient;




    namespace test1
    {
    public partial class Form1 : Form
    {
    private bool mouseDown;
    public Form1()
    {
    InitializeComponent();
    test1.dragcontrol.init(this.tt,this.tt);
    }


    private void Form1_Load(object sender, EventArgs e)
    {


    }


    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
    if (e.Button == MouseButtons.Right)
    {
    mouseDown = true;
    tt.Location = new Point(e.X, e.Y);
    tt.Visible = true;
    }
    else
    {
    mouseDown = false;
    tt.Visible = false;
    }


    }


    private void tt_MouseClick(object sender, MouseEventArgs e)
    {
    tt.Visible = false;
    }


    private void Form1_MouseMove_1(object sender, MouseEventArgs e)
    {
    if (mouseDown)
    {
    tt.Location = e.Location;

    }


    }


    private void tt_Click(object sender, EventArgs e)
    {
    tt.Visible = false;
    }


    private void Form1_Click(object sender, EventArgs e)
    {
    tt.Visible = false;
    }


    private void button1_Click(object sender, EventArgs e)
    {


    }


    private void button1_MouseMove(object sender, MouseEventArgs e)
    {
    if(tt.Visible)
    {
    tt.BringToFront();
    }

    }
    }
    }

    خیلی ممنون دوست عزیز بابت راهنمایی. مشکل حل شد.
    البته اون چیزی که من میخواستم این بود که با یه راست کلیک یه پیکچرباکس نمایش داده بشه و مدام با حرکت موس حرکت کنه.سرس کدش رو هم گذاشتم برای هرکسی که لازمش شد
    آخرین ویرایش به وسیله Mahmoud.Afrad : دوشنبه 29 مهر 1398 در 21:56 عصر دلیل: استفاده از تگ کد نامناسب

تاپیک های مشابه

  1. سوال: بررسی وضعیت موس در خارج از محیط برنامه (در صفحه دستکتاپ)
    نوشته شده توسط امیر مهرشاد در بخش C#‎‎
    پاسخ: 4
    آخرین پست: دوشنبه 01 مهر 1392, 21:36 عصر
  2. سوال: تغییر موقعیت ماوس در صفحه
    نوشته شده توسط msdn1223 در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 6
    آخرین پست: چهارشنبه 27 دی 1391, 22:06 عصر
  3. تغییر موقعیت مکان نما (ماوس)
    نوشته شده توسط system32 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 16 خرداد 1388, 12:49 عصر
  4. فوکوس در موقعیت خاص
    نوشته شده توسط Sal_64 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: جمعه 26 مهر 1387, 18:37 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •