Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Lock mouse on click! 
:(
    Опции темы
NURMS
Дата 10.12.2008, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Всем привет!

Как можно заблокировать курсор в одной точке, к примеру, при mouseDown, и разблокировать при mouseUp.
PM MAIL   Вверх
QryStaL
Дата 10.12.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 3
Всего: 32



Типа такого

Код

public partial class Form1 : Form
{
    private bool letMove = true;
    private Point location = Cursor.Position;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        letMove = false;
    }

    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        letMove = true;
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (!letMove)
        {
            Cursor.Position = this.location;
        }
        else
        {
            this.location = Cursor.Position;
        }
    }
}



--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
NURMS
Дата 11.12.2008, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 20.4.2007

Репутация: нет
Всего: нет



Спасибо! Всё работает! 
Чёрт всё ваще запуталось.

Тут такое: 

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace UMBC
{
    public partial class Form1 : Form
    {
        private Image mainImage = Image.FromFile("956.jpg");

        private Point ps = new Point(0, 0);
        private bool mouseDown = false;

        public Form1()
        {
            InitializeComponent();

            label1.Text = mouseDown.ToString();

            pictureBox1.Location = new Point(0, 0);
            pictureBox1.Size = new Size(mainImage.Width, mainImage.Height);
            pictureBox1.Image = mainImage;

            pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove);

            pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown);
            pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp);
        }

        void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                mouseDown = false;
                label1.Text = mouseDown.ToString();
            }
        }

        void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            ps.X = e.X;    
            ps.Y = e.Y;

            if (e.Button == MouseButtons.Left)
            {
                mouseDown = true;
                label1.Text = mouseDown.ToString();
            }
        }

        void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (mouseDown == true)
            {
                label1.Text = "X: " + pictureBox1.Location.X + (e.X - ps.X) + " Y: " + pictureBox1.Location.Y + (e.Y - ps.Y);

                if (pictureBox1.Location.X + (e.X - ps.X) <= 0 && pictureBox1.Location.Y + (e.Y - ps.Y) <= 0)
                {
                    pictureBox1.Location = new Point(pictureBox1.Location.X + (e.X - ps.X), pictureBox1.Location.Y + (e.Y - ps.Y));
                }
            }
        }        
    }
}


Проблема в том, что если курсор при не выполнении условий ифа не остановить,  его координаты меняются, и когда снова удовлетворяет условиям в иф, происходят плохие вещи.

А тут похоже:

Код

public partial class Form1 : Form
{
    private bool letMove = true;
    private Point location = Cursor.Position;
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        letMove = false;
    }
    private void Form1_MouseUp(object sender, MouseEventArgs e)
    {
        letMove = true;
    }
    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        if (!letMove)
        {
            Cursor.Position = this.location;
        }
        else
        {
            this.location = Cursor.Position;
        }
    }
}


Этот код ни как не сунуть под условие ифа.

Как-нибудь проще возможно?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0721 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.