Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/165: Рейтинг темы: голосов - 165, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
1

Как создать кнопку или поле ввода при клике мышью на форме?

22.09.2014, 11:32. Показов 32555. Ответов 25
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет, требуется помощь с лабкой, но похоже я стою на асфальте в лыжи обутый. Не могу понять даже с чего начать. Хоть подскажите куда двигаться плиз. Есть задание "Разработать программу, которая при щелчке мыши динамически порождает на окне кнопки или поля для ввода. Каждый четный элемент управления является кнопкой, нечетный - полем ввода. Левый верхний угол кнопки определяется местоположением курсора при нажатии. Для поля ввода положения курсора определяет координаты правого нижнего угла." Задание 3 курса универа, с# только начали учить в этом семестре. Сам я сильно заболел, и спросить нету у кого даже. Только надежда, что вы подскажите, что с этим делать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2014, 11:32
Ответы с готовыми решениями:

Как создать кнопку или поле ввода при клике мышью на форме? - C#
Привет, требуется помощь с лабкой, задание 3 курса универа, с# только начали учить в этом...

Как сделать, чтобы при клике мышью в текстовом поле (или комбобоксе) курсор оставался в нём и можно было ввести текст?
Подскажите пожалуйста как сделать, чтобы при клике мышью в текстовом поле (или комбобоксе) курсор...

Как сделать всплывающее окно, при клике на поле ввода?
Пример можно посмотреть тут: ...

Динамическое создание PictureBox при клике мышью по форме
Здравствуйте! Сегодня решил спросить. А можно сделать так чтобы при каждом нажатии мыши на форме...

25
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 11:48 2
тебе пример написать?
0
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 11:51  [ТС] 3
да мне хоть что-то написать. А то я даже не знаю куда от чего оттолкнуться, так как более, мб что-то пропустил по учебе
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 11:55 4
Лучший ответ Сообщение было отмечено andreyprog как решение

Решение

так как это лаба то нужно все по простому. Подожди 2 минуты

Добавлено через 3 минуты
держи:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ICSharpCode;
 
namespace ziplib
{
    public partial class Form1 : Form
    {
        int countElement = 0;
        Point LocMouse;
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (countElement % 2 == 0)
            {
                Button bn = new Button();
                bn.Name = "But" + countElement;
                bn.Location = LocMouse;
                bn.Size = new Size(100, 24);
                bn.Text = "Кнопка";
                bn.TabIndex = countElement;
                this.Controls.Add(bn);
                countElement++;
            }
            else
            {
                TextBox tx = new TextBox();
                tx.Name = "tex" + countElement;
                tx.Location = new Point(100 + LocMouse.X, LocMouse.Y);;
                tx.Size = new Size(100, 24);
                tx.Text = "";
                tx.TabIndex = countElement;
                this.Controls.Add(tx);
                countElement++;
            }
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            LocMouse = new Point(e.X, e.Y);
        }
    }
}
1
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 11:55  [ТС] 5
кстати, работаем в visual studio 2005
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 11:56 6
подожди секунду, не дочитал, сейчас подправлю
0
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 11:57  [ТС] 7
блин, я тоже хочу так все делать за 2-3 минуты
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:00 8
будет работать и на 2005 visual

Добавлено через 26 секунд
все исправил. надеюсь события добавлять умеешь

Добавлено через 1 минуту
если хочешь могу объяснить что к чему
1
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 12:02  [ТС] 9
конечно хочу)
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:15 10
ок. еще пару минут, кину код со всеми описаниями...

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ICSharpCode;
 
namespace ziplib
{
    public partial class Form1 : Form
    {
        //здесь объявляем глобальные переменные которые можно использовать 
        //во всем методах и функциях данного класса
        int countElement = 0;//сохраняет количество наших кнопок и полей ввода(начально количество равно 0)
        Point LocMouse;//переменная которая хронит координаты мыши на форме
        public Form1()
        {
            //определение элементов
            InitializeComponent();
        }
 
        //событие вызываемое при отпускании нажатой левой кнопки мыши
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            //проверяем четность количества кнопок и полей ввода 
            //(если равен 0 - то четное, если 1 - то не четно. 
            //в данном случае используется арифметическая функция деления с остатком, следовательно 0 и 1 - это остатки)
            if (countElement % 2 == 0)
            {
                //зоздаем новый экземпляр кнопки
                //и задаем его параметры
                Button bn = new Button();
                bn.Name = "But" + countElement;
                bn.Location = LocMouse;//устанавливаем координаты кнопки из locvouse
                bn.Size = new Size(100, 24);
                bn.Text = "Кнопка";
                bn.TabIndex = countElement;
                //добавляем данную кнопку в control формы в противном случаее она не отобразится на форме
                this.Controls.Add(bn);
                countElement++;//+1 к количеству элементов
            }
            else
            {
                //так же формируем полу ввода (textbox)
                //задаем его пораметры
                TextBox tx = new TextBox();
                tx.Name = "tex" + countElement;
                tx.Location = new Point(100 + LocMouse.X, LocMouse.Y);
                tx.Size = new Size(100, 24);
                tx.Text = "";
                tx.TabIndex = countElement;
                //также добавляем в контрол формы
                this.Controls.Add(tx);
                countElement++;//+1 к количеству элементов
            }
        }
 
        //событие которое работает если указатель мыши проходит через форму либо просто двигоется на ней
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            //если мышь движется то получаем ее координаты на форме
            LocMouse = new Point(e.X, e.Y);
        }
    }
}
Добавлено через 1 минуту
если что то не понятно говори
0
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 12:20  [ТС] 11
вроде, пока что понятно, сейчас скачаю vs 2005, а то на 2012 ошибки дает
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:23 12
лутше 10

Добавлено через 39 секунд
и ошибка может быть здесь:
Цитата Сообщение от Baky Посмотреть сообщение
using ICSharpCode;
удали ее нафиг
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:25 13
вот мой проект
Вложения
Тип файла: zip ziplib.zip (41.1 Кб, 247 просмотров)
0
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 12:26  [ТС] 14
да, ты прав, ошибка была именно там, но если удалить эту строку, то ругается на
Error 1 'l4.Form1' does not contain a definition for 'button1_Click' and no extension method 'button1_Click' accepting a first argument of type 'l4.Form1' could be found (are you missing a using directive or an assembly reference?) D:\Универ\3 курс\с#\l4\l4\l4\Form1.Designer.cs 42 64 l4
и
Message 2 The designer cannot process unknown name 'button1_Click' at line 42. The code within the method 'InitializeComponent' is generated by the designer and should not be manually modified. Please remove any changes and try opening the designer again. D:\Универ\3 курс\с#\l4\l4\l4\Form1.Designer.cs 43 0
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:29 15
лутше открой мой проект - должно быть все норм. Хотя есть желание то можно и с твоим проектам разобраться
0
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 12:29  [ТС] 16
твой проект открыло, работает все классно
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:33 17
Лучший ответ Сообщение было отмечено andreyprog как решение

Решение

ты когда копировал код просто вставил его и все?

Добавлено через 2 минуты
в общем на будушае.
Это строка указывает пространство именн твоего проекта:
Цитата Сообщение от Baky Посмотреть сообщение
namespace ziplib
если она будет называтся по другому то и visual будет матерится

твое решение и проект называются l4 то достаточно было изменить ziplib на l4

Добавлено через 1 минуту
но сейчас это уже не важно
1
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 12:38  [ТС] 18
спасибо огромное, надеюсь, я когда-то тоже буду так по-шурику во всем этом разбираться)
0
79 / 79 / 37
Регистрация: 11.09.2014
Сообщений: 579
22.09.2014, 12:39 19
если не будешь болеть

Добавлено через 25 секунд
во общем пиши если что)
0
1 / 1 / 1
Регистрация: 14.07.2014
Сообщений: 121
22.09.2014, 12:45  [ТС] 20
ок, спс. У нас просто урезали количество учебных недель с 16 до 8, и каждый день по 5 пар, 6 дней учебы. Сейчас пропустить 1 день - это то, что раньше пропустить пол недели(
0
22.09.2014, 12:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2014, 12:45
Помогаю со студенческими работами здесь

Звук при клике мышью на кнопку и последующий вызов процедуры этой же кнопкой
Здравствуйте, помогите разобраться как сделать так, чтобы одновременно и звук воспроизводился и...

Как в Delphi при клике на кнопку создать Edit
Как в Delphi при клике на кнопку создать Edit или еще что то? помогите очень надо) зараниэ спасибо)

Как очистить поле ввода при нажатии на кнопку?
Нужно очистить 2 поля ввода (ru_word и eng_word) после нажатия на кнопку. Через ".delete(0, END)"...

Вставка текста при клике на поле ввода
Всем привет. Делаю крестики нолики. Как сделать так чтобы при клике по полю ввода появлялся текст...


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

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