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

نام تاپیک: چسباندن یک فرم به لبه فرم دیگر

  1. #1

    Question چسباندن یک فرم به لبه فرم دیگر

    سلام توی برنامه ای مثل Team viewerیک پنجره کوچیک به پنجره اصلی برنامه چسبیده شده و با حرکت پنجره اصلی اون هم باهاش حرکت میکنه، حالا توی سی شارپ چطوری همچین فرمی رو باید ساخت، و مهمتر اینکه با یک دکمه بشه مخفیش کرد و با یک دکمه نمایش داد و هر دفه که نمایش داده میشه به قسمت راست پنجره اصلی بچسبه؟!

  2. #2
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: چسباندن یک فرم به لبه فرم دیگر


    public partial class Form1 : Form
    {
    Timer timer;
    bool resetting = false;
    Form2 frm2;
    public Form1()
    {
    InitializeComponent();
    frm2 = new Form2();
    frm2.Show();
    timer = new Timer();
    timer.Interval = 50;
    timer.Tick += new EventHandler(timer1_Tick);
    }


    private Form mMainForm;

    private List<Form> mConnectedForms = new List<Form>();

    private Point mMainLocation;

    public Form1(Form mainForm)
    {
    this.mMainForm = mainForm;
    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    this.mMainForm.LocationChanged += new EventHandler(Form1_LocationChanged);
    }
    public void ConnectForm(Form form)
    {
    if (!this.mConnectedForms.Contains(form))
    {
    this.mConnectedForms.Add(form);
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void Form1_Activated(object sender, EventArgs e)
    {
    if (!resetting)
    {
    timer.Start();
    frm2.Focus();
    this.Focus();
    resetting = true;
    }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    timer.Stop();
    resetting = false;
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {

    }

    private void Form1_LocationChanged(object sender, EventArgs e)
    {
    Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y);
    foreach (Form form in this.mConnectedForms)
    {
    form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
    }

    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    }

    }



    اینم فرم 2


    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;

    namespace WindowsFormsApplication1
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {

    }
    }
    }
    آخرین ویرایش به وسیله Mahmoud.Afrad : چهارشنبه 06 مرداد 1395 در 22:58 عصر

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    برا جلوگیری از شلوغ کاری اینو تویه کلاس بنویس


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

    namespace WindowsFormsApplication1
    {

    class Class1
    {
    private Form mMainForm;

    private List<Form> mConnectedForms = new List<Form>();

    private Point mMainLocation;

    public Class1(Form mainForm)
    {
    this.mMainForm = mainForm;
    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    this.mMainForm.LocationChanged += new EventHandler(MainForm_LocationChanged);
    }

    public void ConnectForm(Form form)
    {
    if (!this.mConnectedForms.Contains(form))
    {
    this.mConnectedForms.Add(form);
    }
    }

    void MainForm_LocationChanged(object sender, EventArgs e)
    {
    Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y);
    foreach (Form form in this.mConnectedForms)
    {
    form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
    }

    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    }
    }
    }




  4. #4

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط kamiloted مشاهده تاپیک

    public partial class Form1 : Form
    {
    Timer timer;
    bool resetting = false;
    Form2 frm2;
    public Form1()
    {
    InitializeComponent();
    frm2 = new Form2();
    frm2.Show();
    timer = new Timer();
    timer.Interval = 50;
    timer.Tick += new EventHandler(timer1_Tick);
    }


    private Form mMainForm;

    private List<Form> mConnectedForms = new List<Form>();

    private Point mMainLocation;

    public Form1(Form mainForm)
    {
    this.mMainForm = mainForm;
    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    this.mMainForm.LocationChanged += new EventHandler(Form1_LocationChanged);
    }
    public void ConnectForm(Form form)
    {
    if (!this.mConnectedForms.Contains(form))
    {
    this.mConnectedForms.Add(form);
    }
    }
    private void button1_Click(object sender, EventArgs e)
    {

    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void Form1_Activated(object sender, EventArgs e)
    {
    if (!resetting)
    {
    timer.Start();
    frm2.Focus();
    this.Focus();
    resetting = true;
    }
    }

    private void timer1_Tick(object sender, EventArgs e)
    {
    timer.Stop();
    resetting = false;
    }

    private void Form1_DragDrop(object sender, DragEventArgs e)
    {

    }

    private void Form1_LocationChanged(object sender, EventArgs e)
    {
    Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y);
    foreach (Form form in this.mConnectedForms)
    {
    form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
    }

    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);
    }

    }



    اینم فرم 2


    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;

    namespace WindowsFormsApplication1
    {
    public partial class Form2 : Form
    {
    public Form2()
    {
    InitializeComponent();
    }

    private void Form2_Load(object sender, EventArgs e)
    {

    }
    }
    }
    کار نکرد لطفا برنامشو پیوست کنید و کداشو هم یه توضیح بدین.

  5. #5
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط daniyaltjm مشاهده تاپیک
    کار نکرد لطفا برنامشو پیوست کنید و کداشو هم یه توضیح بدین.
    چون عکس پرو فایلتو عوض کردی تا 10 دیقه دیگه با 2 خط کارتو راه می ندازم.

  6. #6
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    اینم نمونه.لذت ببر.دکمه تشکر فراموش نشه

    فرم
    آخرین ویرایش به وسیله kamiloted : پنج شنبه 07 مرداد 1395 در 22:30 عصر

  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1384
    محل زندگی
    اصفهان
    پست
    93

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    سلام

    Form2 frm2;
    public Form1()
    {
    InitializeComponent();
    frm2 = new Form2();
    frm2.Show();
    this.LocationChanged += new EventHandler(Form1_LocationChanged);
    }
    private void Form1_LocationChanged(object sender, EventArgs e)
    {
    int x = this.Width + this.Location.X;
    int y = this.Location.Y;
    frm2.Location = new Point(x, y);
    }

  8. #8

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

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

    و یک مورد فاحش دیگه اینکه وقتی پنجره ها Resize میشوند باید هر دو با هم Resize بشوند نه اینکه اون یکی برود زیر اون یکی و به قول معروف شیر تو شیر بشود .
    آخرین ویرایش به وسیله daniyaltjm : پنج شنبه 07 مرداد 1395 در 23:32 عصر

  9. #9

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط moradian مشاهده تاپیک
    سلام

    Form2 frm2;
    public Form1()
    {
    InitializeComponent();
    frm2 = new Form2();
    frm2.Show();
    this.LocationChanged += new EventHandler(Form1_LocationChanged);
    }
    private void Form1_LocationChanged(object sender, EventArgs e)
    {
    int x = this.Width + this.Location.X;
    int y = this.Location.Y;
    frm2.Location = new Point(x, y);
    }
    کد خوبی نوشتید اگه قابلیت Dock شدن و تغییر سایز هر دو با هم رو هم بهش اضافه کنید کامل میشه.

  10. #10
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط daniyaltjm مشاهده تاپیک
    ممنون ولی کامل لذت نبردم! چون توی تیم ویوور وقتی پنچره دوم رو ازش جدا میکردی و بعد پنجره اول رو جابجا میکردی پنجره دوم سرجای خودش می موند ولی برنامه شما وقتی که جداش میکنم و بعد پنجره اول رو جابجا میکنم پنجره دوم خودبخود میاد میچسبه!!

    و یک مورد فاحش دیگه اینکه وقتی پنجره ها Resize میشوند باید هر دو با هم Resize بشوند نه اینکه اون یکی برود زیر اون یکی و به قول معروف شیر تو شیر بشود .
    اگه توجه کنید توی تیم ویور فرم اصلی Resize نمیشه. فقط فرم کوچیک Resize میشه.بعد کد اول من بود.فرم، محیط اتچ داشت که از اون جدا میکردی دیگه جابه جا نمیشد.و به محض اینکه وارد محیط اتچ میشد همزمان جابه جا میشد.مثل تیم ویور.

    من یه حرفه ای تر نوشتم نیازی به فرم نیست.تازه فرم برنامتون سنگین نمیشه.از 2 تا هم استفاده نمیکنید. دقیقا مثل
    6542.PNG

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

  11. #11

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    گه توجه کنید توی تیم ویور فرم اصلی Resize نمیشه. فقط فرم کوچیک Resize میشه.بعد کد اول من بود.فرم، محیط اتچ داشت که از اون جدا میکردی دیگه جابه جا نمیشد.و به محض اینکه وارد محیط اتچ میشد همزمان جابه جا میشد.مثل تیم ویور.
    خوب الان تیم ویور به کنار در کل نمیشه کاری کرد؟ بعدش هم توی برنامتون من وقتی فرم کوچیک رو جدا میکنم و بعد فرم یک رو تکون میدم خودکار میچسبند به هم!!! من می خوام حالت Dock داشته باشه که وقتی سمت چپ فرم کوچیک به سمت راست فرم بزرگ مثلا یک سانت نزدیک شد بچسبند به هم؟! مال شما اصلا اینطور نبود.

    من یه حرفه ای تر نوشتم نیازی به فرم نیست.تازه فرم برنامتون سنگین نمیشه.از 2 تا هم استفاده نمیکنید. دقیقا مثل
    اونم بزارید ببینیم!

  12. #12
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1391
    پست
    337

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط daniyaltjm مشاهده تاپیک
    خوب الان تیم ویور به کنار در کل نمیشه کاری کرد؟ بعدش هم توی برنامتون من وقتی فرم کوچیک رو جدا میکنم و بعد فرم یک رو تکون میدم خودکار میچسبند به هم!!! من می خوام حالت Dock داشته باشه که وقتی سمت چپ فرم کوچیک به سمت راست فرم بزرگ مثلا یک سانت نزدیک شد بچسبند به هم؟! مال شما اصلا اینطور نبود.



    اونم بزارید ببینیم!


    Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y); foreach (Form form in this.mConnectedForms)
    {
    form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
    }

    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);




    برای : وقتی سمت چپ فرم کوچیک به سمت راست فرم بزرگ مثلا یک سانت نزدیک شد بچسبند

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

  13. #13

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط kamiloted مشاهده تاپیک


    Point relativeChange = new Point(this.mMainForm.Location.X - this.mMainLocation.X, this.mMainForm.Location.Y - this.mMainLocation.Y); foreach (Form form in this.mConnectedForms)
    {
    form.Location = new Point(form.Location.X + relativeChange.X, form.Location.Y + relativeChange.Y);
    }

    this.mMainLocation = new Point(this.mMainForm.Location.X, this.mMainForm.Location.Y);




    برای : وقتی سمت چپ فرم کوچیک به سمت راست فرم بزرگ مثلا یک سانت نزدیک شد بچسبند

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

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    آبان 1384
    محل زندگی
    اصفهان
    پست
    93

    نقل قول: چسباندن یک فرم به لبه فرم دیگر

    نقل قول نوشته شده توسط daniyaltjm مشاهده تاپیک
    کد خوبی نوشتید اگه قابلیت Dock شدن و تغییر سایز هر دو با هم رو هم بهش اضافه کنید کامل میشه.

    Form2 frm2;
    public Form1()
    {
    InitializeComponent();
    frm2 = new Form2();
    frm2.Show();
    this.LocationChanged += new EventHandler(Form1_LocationChanged);
    this.Resize += new EventHandler(Form1_Resize);
    }
    private void Form1_LocationChanged(object sender, EventArgs e)
    {
    int x = this.Width + this.Location.X;
    int y = this.Location.Y;
    frm2.Location = new Point(x, y);
    frm2.Height = this.Height;
    }
    private void Form1_Resize(object sender, EventArgs e)
    {
    Form1_LocationChanged(sender, e);
    }


    یه کمی هم از خودت مایه بگذار، عزیز دل برادر
    آخرین ویرایش به وسیله moradian : شنبه 09 مرداد 1395 در 14:37 عصر

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

  1. مبتدی: چسباندن یک فرم به لبه های صفحه !
    نوشته شده توسط hamid_0341 در بخش C#‎‎
    پاسخ: 7
    آخرین پست: چهارشنبه 24 مهر 1392, 08:17 صبح
  2. ارسال به یک فرم دیگر
    نوشته شده توسط Hamid_Reza_xx در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 03 بهمن 1387, 15:00 عصر
  3. سوال: دسترسی به سطرهای datagrid در یک فرم دیگر
    نوشته شده توسط mehrnoosh_al62 در بخش VB.NET
    پاسخ: 8
    آخرین پست: پنج شنبه 30 خرداد 1387, 23:52 عصر
  4. دستیابی به اطلاعات یک فرم از طریق یک فرم دیگر
    نوشته شده توسط alirzn در بخش C#‎‎
    پاسخ: 1
    آخرین پست: چهارشنبه 28 شهریور 1386, 23:13 عصر
  5. چگونه به object هاي يك فرم ديگر دسترسي داشته باشم
    نوشته شده توسط mohsen57 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 4
    آخرین پست: دوشنبه 03 مرداد 1384, 00:56 صبح

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

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

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