2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
1

Открытие второй формы при нажатии правой кнопки мыши

05.08.2013, 20:26. Показов 3948. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!
Ситуация такова:
На главной форме DataGridView1 с данными. Любая строка в нём может выделяться,но другие действия запрещены (с этим проблем нет). Необходимо сделать, чтобы при нажатии на строке правой кнопкой мыши открывалась другая форма с DataGridView2, в котором другие данные. Вторая форма без заголовка (FormBorderStyle=none) и без видимых признаков что это вообще форма. Т.е. получается сделать открытие-закрытие формы, как это реализовано в контекстном меню при щелчке правой кнопкой. Необходимо сделать для того,чтобы какой-либо строке можно было сопоставить несколько строк из другого массива данных (с этим ещё предстоит разобраться, сейчас необходимо сделать отображение второй формы)
Остановился на этом моменте:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Form2 sel;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button==MouseButtons.Right)
            {
                if (sel == null) //второй раз не срабатывает
                {
                    sel = new Form2();
                    sel.Show();
                    sel.Location = e.Location;
                }
            } 
            else
            {
                sel.Close();
            }
        }
    }
}
Строка if (sel == null) второй раз не срабатывает. По какому другому свойству можно проверять открыта ли вторая форма? При попытке указать позицию формы код работает неверно;можно ли отображать вторую форму не относительно экрана, а относительно первой формы. Также не знаю, куда поставить else-если второй формы нет щелчок левой кнопкой вызывает ошибку. Проект прилагаю (VS 2012).
Прошу прощения, если ошибки очевидны-мозги уже не варят.
Заранее спасибо!

P.S. Может есть другой способ?
Вложения
Тип файла: rar WindowsFormsApplication1.rar (50.7 Кб, 7 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2013, 20:26
Ответы с готовыми решениями:

При нажатии правой кнопки мыши увеличить ширину формы на 10, левой уменьшить
При нажатии правой кнопки мыши увеличить ширину формы на 10, левой уменьшить. Помогите полностью...

При нажатии правой кнопки мыши увеличить ширину формы на 10, левой уменьшить.
Помогите написать код программы.При нажатии правой кнопки мыши увеличить ширину формы на 10, левой...

При нажати левой кнопки мыши в месте нажатия отображается зеленый кружок, а при нажатии правой кнопки мыши красный квад
При нажати левой кнопки мыши в месте нажатия отображается зеленый кружок, а при нажатии правой...

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

4
3 / 3 / 3
Регистрация: 25.06.2013
Сообщений: 62
05.08.2013, 21:49 2
Может FormWindowState?
0
138 / 132 / 57
Регистрация: 31.01.2012
Сообщений: 435
05.08.2013, 21:55 3
the_maksimka, как я понял Вам необходимо реализовать контекстное меню? тогда зачем изобретать велосипед? посмотрите в сторону класса ContextMenuStrip
http://msdn.microsoft.com/ru-r... strip.aspx
0
2 / 2 / 2
Регистрация: 29.07.2012
Сообщений: 176
06.08.2013, 20:05  [ТС] 4
Черный ворон, дело в том,что мне надо сделать что-то типа соответствий: например строке с номером n главной формы соответствует строка номер m дочерней формы.
Пример: в главной таблице есть строки:
Ford
Lexus
Toyota
...
Я щёлкаю правой кнопкой по первой записи и во "всплывающем окне" в DataGridView есть строка, например "Легковой", щёлкаю по второй строке, в открывающемся окне выбираю "легковой"...щёлкаю по n-ой строке, и выбираю "Грузовой"...причём,если я для первой строки выбрал "Легковой", то второй раз его выбрать будет нельзя. (прошу прощения если непонятно объяснил)
Мне кажется в дочерней форме в datagridview данные вставлять легче, чем в ContexMenuStrip (поправьте если не прав).

Добавлено через 1 минуту
yearmix, простите, а это к какой части вопроса?
0
3 / 3 / 3
Регистрация: 25.06.2013
Сообщений: 62
06.08.2013, 23:08 5
Цитата Сообщение от the_maksimka Посмотреть сообщение
yearmix, простите, а это к какой части вопроса?
По поводу контестного меню нарыл...
Форма 1
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace contextmenu
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                var menu = new Form2();
                menu.Location = PointToScreen(e.Location);
                menu.Show(this);
            }
        }
    }
}
Форма 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
namespace contextmenu
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.Manual;
        }
        private const int CS_DROPSHADOW = 0x00020000;
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ClassStyle |= CS_DROPSHADOW;
                return cp;
            }
        }
 
        protected override void OnLostFocus(EventArgs e)
        {
            this.Close();
            base.OnLostFocus(e);
        }
    }
}
1
06.08.2013, 23:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2013, 23:08
Помогаю со студенческими работами здесь

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

Изменение события при нажатии правой кнопки мыши
Добрый вечер. Как можно убрать такое всплывающее окно при нажатии правой кнопки по textbox? Я уже...

Отключить контекстное меню при нажатии правой кнопки мыши в ShockwaveFlash
Как отключить контекстное меню при нажатии ПКМ в ShockwaveFlash? И, если можно, то заменить на свое...

Как при нажатии правой кнопки мыши перемещать фигуры, нарисованные на PictureBox
Как при нажатии правой кнопки мыши перемещать фигуры, нарисованные на picturebox?

По щелчку левой кнопки мыши должен меняться цвет формы, а по щелчку правой кнопки мыши – восстанавливаться предыдущий
Добрый день) Пишу одну программку, которая позволяла бы при перемещении курсора мыши менять его...

Открытие нового окна формы при нажатии кнопки
Подскажите пожалуйста, как реализовать открытие нового окна формы, при нажатии кнопки на предыдущей...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru