Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/22: Рейтинг темы: голосов - 22, средняя оценка - 4.68
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315

Из form1 в form2

08.09.2010, 23:40. Показов 4312. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Запарился уже искать то что нужно!
В общем при нажатии на форм 1 считываются координаты и в текстовом формате заносятся в буфер обмена, и нужно чтобы эта инфа автоматически обновлялась в форм2 но не по нажатию а так просто, как это можно сделать?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public partial class Form1 : Form
    {
        int x = 0, y = 0;
        string KoordinatiCursora;
        public Form1()
        {
            InitializeComponent();
            Form f = new Form2();
            f.Show();
        }
       public void Mouses_Click(object sender, MouseEventArgs e)
        {
            x = Cursor.Position.X;
            y = Cursor.Position.Y;
            KoordinatiCursora = "x=" + Convert.ToString(x) + "," + " " + "y=" + Convert.ToString(y);
            Clipboard.SetText(KoordinatiCursora);
        }
    }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.09.2010, 23:40
Ответы с готовыми решениями:

Через Form1 открывают Form2 там открывается Form3 которая меняет данные в Form1. Но они не меняются
В первой форме Main по нажатию кнопки вызываю другую форму private void Button_AddVetrina(object sender, EventArgs e) { ...

Из Form2 в Form1
В form1, после нажатия на кнопку открывается form2. Там можно выбрать и просмотреть картинки. Так вот в чем вопрос, мне нужно что бы после...

Переменные из Form2 в Form1
using System; using System.Drawing; using System.Windows.Forms; namespace Gnvid { public partial class CountForm2 : Form ...

21
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
09.09.2010, 00:22
Цитата Сообщение от 23Alex24 Посмотреть сообщение
не по нажатию а так просто
Это как?
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 08:10  [ТС]
В общем, мне нужен код который обеспечит прямой доступ форм1 к компонентам форм2, т.е чтобы я мог в коде форм1 изменять текст лэйбла форм2) и еще: форм1 и форм2 должны быть одновременно доступны, никакая не блокируется
0
Заблокирован
09.09.2010, 09:10
http://www.pinvoke.net/ - справочник по WinAPI
используй user32.dll
функцию SendMessage код функции WM_SETTEXT
или функцию SetWindowText
буфер обмена наверное не поможет

Convert.ToString(x) - можно проще x.ToString()
0
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 09:12  [ТС]
да буфер обмена это так задание чисто фиг с ним, как сделать доступ то? по английски на столько не шарю чтоб на англ. сайте смотреть)
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
09.09.2010, 09:17
Можно к примеру так осуществить: создать static класс в котором есть метод
C#
1
2
3
4
public static void SetText(Control ctrl)
{
ctrl.Text = "Some text";
}
Либо создать в статическом классе экземпляры каждой формы и работать с ними. Чтобы работать с элементами формы их свойство Modifiers нужно установить в Internal.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static class FormCollection
{
static Form1 form1;
static Form2 form2;
...
public static Form1 Form1
{
get { return form1; }
set { 
  if (form1 != null)
     form1.Dispose();
  
   form1 = value;
}
...
}
}
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 09:19  [ТС]
а эти классы где создать? в програм.цс?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
09.09.2010, 09:22
Можно хоть там. Только тогда перед Application.Run создать экземпляр формы и работать в дальнейшем с ним:
C#
1
2
3
4
5
6
static void Main()
{
...
FormCollection.Form1 = new Form1();
Application.Run(FormCollection.Form1);
}
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 09:25  [ТС]
Если делать через
C#
1
2
3
4
public static void SetText(Control ctrl)
        {
            ctrl.Text = Clipboard.GetText();
        }
я поместил его в форм1, теперь чтобы вызвать его с контролом лэйбла форм2 как сделать нужно?

C#
1
SetText(Form2.ActiveForm.label1.text);
на такую запись ругается
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
09.09.2010, 09:30
Разместить можно в том же program.cs
C#
1
2
3
4
5
6
7
8
9
10
public static class SomeClass
{
public static void SetText(Control ctrl, string text)
        {
            ctrl.Text = text;
        }
}
 
// Вызывать где-нибудь:
SomeClass.SetText(/* здесь ссылка на контрол, label1 к примеру */, /* здесь текст */);
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 09:34  [ТС]
А как сделать чтобы этот класс Самкласс видно было в форм 1? его не видно(
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
09.09.2010, 09:35
Вот здесь почитайте: Ответы на 7 самых частых вопросов по WinForms
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 09:36  [ТС]
я уже читал эти 7 штук и оставил комментарии по их поводу,их видимо удалили, там много пунктов не работают ошибки выдает
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
09.09.2010, 09:54
23Alex24, вот пример кода:
Program.cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
 
namespace WindowsFormsApplication7
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
    public static class SomeClass
    {
        public static void SetText(Control ctrl, string text)
        {
            ctrl.Text = text;
        }
    }
}
Form1.cs
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
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;
 
namespace WindowsFormsApplication7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            // вот здесь, например, вызов метода из класса. tbName - это текстбокс
            SomeClass.SetText(tbName, "привет");
        }
 
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            Form2 form = new Form2();
            form.MdiParent = this;
            form.Show();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
    }
}
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 09:58  [ТС]
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
 
namespace TvpNumbOne
{
    static class Program
    {
        
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1()) ;
        }
        public static class SomeClass
       {
        public static void SetText(Control ctrl, string text)
        {
            ctrl.Text = text;
        }
      }
    }
}
вот мой программ.цс



а вот текст форм1:
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
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;
 
namespace TvpNumbOne
{
    public partial class Form1 : Form
    {
        int x = 0, y = 0;
        string KoordinatiCursora;
        public Form1()
        {
            InitializeComponent();
            Form2 f = new Form2();
            f.Show();
        }
       public void Mouses_Click(object sender, MouseEventArgs e)
        {
            x = Cursor.Position.X;
            y = Cursor.Position.Y;
            KoordinatiCursora = "x=" + Convert.ToString(x) + "," + " " + "y=" + Convert.ToString(y);
            Clipboard.SetText(KoordinatiCursora);
            SomeClass.SetText(tbName, "привет");
        }
    }
}
при этом он ругается: Error 1 The name 'SomeClass' does not exist in the current context
0
 Аватар для kirill29
2098 / 1263 / 173
Регистрация: 01.02.2009
Сообщений: 2,842
09.09.2010, 10:01
23Alex24, у тебя класс SomeClass объявлен внутри класса Porgram. Вот и ругается. Посмотри внимательно мой пример
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 10:05  [ТС]
тьфу ты, простите нуба=) а как можно вызвать метод этого класса применительно к лэйблу формы 2?

пробывал делать так:

SomeClass.SetText(Form2.ActiveForm.label 1.text, "");

но это я думаю неправильно и оно ругается само собой)
0
 Аватар для Pooh
409 / 361 / 82
Регистрация: 07.10.2009
Сообщений: 558
09.09.2010, 10:17
А если так:
Во второй форме пишем
C#
1
2
3
4
5
6
7
public Point koordinat
    {
        set
        {
            label1.Text = String.Format("Координаты: x = {0}, y = {1}", value.X, value.Y);
        }
    }
:
а в главной:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public partial class MainForm : Form
{
    Form1 frm = new Form1();
    
    public MainForm()
    {
        
        InitializeComponent();
        
        frm.Show();
    }
    
    void MainFormMouseClick(object sender, MouseEventArgs e)
    {
        frm.koordinat = e.Location;
    }
}
По-моему, так!
1
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
09.09.2010, 10:24  [ТС]
Error 1 The name 'frm' does not exist in the current context
0
 Аватар для Pooh
409 / 361 / 82
Регистрация: 07.10.2009
Сообщений: 558
09.09.2010, 10:28
Цитата Сообщение от 23Alex24 Посмотреть сообщение
Error 1 The name 'frm' does not exist in the current context
Объявите frm как у меня, чтобы она была видна во всем классе, и у Вас нужно объявить Form2 frm = new Form2()
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2010, 10:28
Помогаю со студенческими работами здесь

Переход из Form1 в Form2
Нужно, чтобы в Form1 Menustrip Открыть открывал Form2 Буду признательна тому, кто поможет

Наследование от Form1 в Form2
Ситуация: Есть проэкт, в нём есть главная форма(собственно главное окно программы), и вчера зделал вторую форму 'Настройки'. Дальше...

С Form2 в datagridview на Form1
Добрый вечер, столкнулся с проблемой, есть на Form1 datagridview1 и есть Form2 на которой находятся текстбоксы, с которых надо ввести...

Развернуть Form1 из form2
Привет всем! Мне нужно чтобы из form 2 я мог развернуть form 1. Сворачиваю в трей при помощи this.WindowState =...

Переход с Form1 на Form2
Суть проста. При нажатии на Справка в ToolStripMenuItem (Form1) выводит Form2 1. Добавил Form2 (Проект-Добавить форму Windows -Форма...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru