Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
#1

Передать форму в функцию - C#

21.12.2015, 00:21. Просмотров 562. Ответов 18
Метки нет (Все метки)

Допустим есть:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
if (radioButton1.Checked || radioButton2.Checked)
{
 if (radioButton1.Checked)
 {
  Gb.Hot = "Gamer1"; //Gb.Hot - глобальная переменная типа string
 }
  if (radioButton2.Checked)
 {
  Gb.Hot = "Computer";
 }
Gb.Myform2.Close();
}
 else MessageBox.Show("Кто первый?");
К этому коду нужно обратится несколько раз.
Пытался сделать так:
C#
1
2
3
4
5
6
public static void Hot1()
{
RadioButton radioButton1 = new RadioButton();
RadioButton radioButton2 = new RadioButton();
... //Код выше
}
Но тогда все время выходит MessageBox
Если каждый раз в нужное место вставить код, то работает правильно

Как все таки передать radioButton в функцию/процедуру или как это еще назвать..?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2015, 00:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передать форму в функцию (C#):

Передать данные на вторую форму
Добрый день! Есть коллекция dataGridView1.DataSource = names; затем есть...

Передать переменную на другую форму
Передавал значение из одной формы на вторую так На первой форме: Form2 f2 =...

Передать значение кнопки в форму
Нужно передать значение, получаемое посредством клика на кнопке в дочерней...

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

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

Передать текст на другую форму
Всем привет, не получается передать значение listbox с главной формы на 2 форму...

18
LonerZzz
тыжПрограммист
317 / 132 / 43
Регистрация: 21.04.2014
Сообщений: 586
21.12.2015, 00:30 #2
Цитата Сообщение от Viewed Посмотреть сообщение
Как все таки передать radioButton в функцию/процедуру или как это еще назвать..?
В метод
Передать проще простого. Взял и передал свой radioButton1 в качестве параметра в метод..Точно так же как и строки и числа передаёшь.

Добавлено через 2 минуты
Цитата Сообщение от Viewed Посмотреть сообщение
RadioButton radioButton1 = new RadioButton();
RadioButton radioButton2 = new RadioButton();
и тут у тебя каждый раз при входе в метод..происходит создание нового объекта. Лучше в глобальные переменные вынеси
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
21.12.2015, 17:07  [ТС] #3
Помучился слегка, стало работать правильно
Просто недавно начал осваивать C#

А можно создать глобальный массив со значением по умолчанию, например, одни нули, но изменяемым в процессе программы?
0
Даценд
Модератор
Эксперт .NET
4045 / 3885 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
21.12.2015, 18:09 #4
Цитата Сообщение от Viewed Посмотреть сообщение
Как все таки передать radioButton в функцию/процедуру или как это еще назвать..?
Не нужно весь radioButton передавать. Достаточно значение свойства Checked передать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void button1_Click(object sender, EventArgs e)
{
    Hot1(radioButton1.Checked, radioButton2.Checked)
}
public void Hot1(bool check1, bool check2)
{
    if (check1 || check2)
    {
        if (check1)
        {
            Gb.Hot = "Gamer1"; //Gb.Hot - глобальная переменная типа string
        }
        if (check2)
        {
            Gb.Hot = "Computer";
        }
        Gb.Myform2.Close();
    }
    else MessageBox.Show("Кто первый?");
}
Цитата Сообщение от Viewed Посмотреть сообщение
А можно создать глобальный массив со значением по умолчанию, например, одни нули, но изменяемым в процессе программы?
Можно. Массивы элементов значимого типа автоматически при создании инициализируются нулями.
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
21.12.2015, 18:58  [ТС] #5
Еще вопрос

Форма запускается следующим образом
C#
1
2
3
4
5
6
7
8
9
static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
Если добавить
C#
1
Application.Run(new Form2());
То после закрытия Form1, последует открытие Form2

Как не закрывая Form1 открыть Form2 именно отсюда?
Или как передать "главенство" Form2, не закрывая Form1?
0
HectorPrima
139 / 74 / 53
Регистрация: 19.12.2014
Сообщений: 266
22.12.2015, 09:42 #6
Цитата Сообщение от Viewed Посмотреть сообщение
Как не закрывая Form1 открыть Form2 именно отсюда?
Или как передать "главенство" Form2, не закрывая Form1?
Расскажи зачем городить такой огород.
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 12:57  [ТС] #7
Просто по-другому не могу придумать
Так можно такой огород сделать?
0
HectorPrima
139 / 74 / 53
Регистрация: 19.12.2014
Сообщений: 266
22.12.2015, 13:18 #8
Цитата Сообщение от Viewed Посмотреть сообщение
Просто по-другому не могу придумать
О чем речь, что за задумка?
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 13:54  [ТС] #9
Form1 на весь экран
Form2 имеет тот же фон и тоже на весь, но другое заполнение

Если закрывать Form1 и открыть Form2 виден переход, то есть мелькает рабочий стол и вот уже новое окно

Я сочинил следующий огород: открыл Form2, скрыл Form1
С панели тоже скрыл, но осадок, что она все же работает - остался

Перенести все на Form1? Там и так мишура. Сунуть туда и при запуске скрыть элементы как бы "Form2"?
0
Даценд
Модератор
Эксперт .NET
4045 / 3885 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
22.12.2015, 14:01 #10
Viewed,
Это проще сделать при помощи UserControl. Два usercontrol'а с разным набором элементов управления по очереди добавляются на форму.
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 14:07  [ТС] #11
Если скажу "поподробней" - отправите в гугл?
0
Даценд
Модератор
Эксперт .NET
4045 / 3885 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
22.12.2015, 14:22 #12
Не обязательно в гугл.
Можно сначала отправиться по этой ссылке: http://www.cyberforum.ru/windows-forms/thread1558189.html#post8225220
Но последовательность в общем случае такая:
1) добавляете в проект UserControl
2) в конструкторе добавляете на него нужные элементы
3) программируете обработчики (п.2 и 3 практически не отличаются от оформления форм)
4) перестраиваете проект, после чего имя usercontrol'а появляется на панели элементов
5) при необходимости можно добавить любое количество usercontrol'ов разных по составу элементов и по коду обработчиков
6) добавляете на форму тот UserControl, который должен отображаться при старте. Либо в конструкторе, либо программно в Form_Load:
C#
1
2
3
MyUserControl myUserControl1=new MyUserControl();
myUserControl1.Name = "UK1";
this.Controls.Add(myUserControl1);
7) при необходимости смены UserControl'а на форме либо удаляете добавленный ранее из коллекции, либо прячете, а затем добавляете другой.
Таким образом будет одна форма и сменные UserControl'ы.
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 14:29  [ТС] #13
Хм, надо попробовать

Еще вопрос!
Можно и, если да, то как: считать клик не по всему pictureBox'у, а только по какой-нибудь его части? (Грубо говоря, аналогия с играми "поиск предметов" - фон и некоторые его части кликабельны)
0
HectorPrima
139 / 74 / 53
Регистрация: 19.12.2014
Сообщений: 266
22.12.2015, 14:35 #14
А в чем проблемы?
C#
1
2
3
4
        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show(e.X + " " + e.Y); // координаты X и Y внутри pictureBox
        }
Добавлено через 47 секунд
описывай в памяти области для кликов и проверяй их.
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 14:37  [ТС] #15
Проблема в том, что я только-только начал натыкивать на этом что-то
Поэтому не знаю многих конструкций и возможностей

Спасибо)
Наверное, еще вернусь)
0
Даценд
Модератор
Эксперт .NET
4045 / 3885 / 2573
Регистрация: 20.04.2015
Сообщений: 7,060
22.12.2015, 14:41 #16
Получить координаты щелчка e.X и e.Y можно в обработчике события MouseClick:
C#
1
2
3
4
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
    MessageBox.Show(string.Format("Координаты: x={0}, y={1}", e.X, e.Y)); 
}
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 16:07  [ТС] #17
Как передать в метод одномерный массив и вернуть его?
0
HectorPrima
139 / 74 / 53
Регистрация: 19.12.2014
Сообщений: 266
22.12.2015, 16:21 #18
http://www.cyberforum.ru/csharp-beginners/thread648096.html
0
Viewed
0 / 0 / 1
Регистрация: 20.09.2015
Сообщений: 68
22.12.2015, 20:27  [ТС] #19
А я так сделал
C#
1
2
3
4
5
if (If.CanHod(Gb.Game) == true)
            {
              ...
            }
            else ...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static Boolean CanHod(int[] Game)
        {
 
            int k = 0;
            bool x;
 
            for (int i = 0; i < 9; i++)
            {
                if (Game[i] == 0) k += 1;
            } 
 
            if (k != 0) x = true; 
            else x = false; 
            return (x);
        }
Добавлено через 48 минут
Вопрос. После определенных вычислений надо вернутся к коду Form1 и ждать клика по какой-либо кнопке, ну а потом вернуть, допустим, true, как?
0
22.12.2015, 20:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2015, 20:27
Привет! Вот еще темы с решениями:

Передать тему на другую форму
Здравствуйте. Подскажите, пожалуйста с таким вопросом, как можно передать тему...

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

Передать параметры с формы на форму
Проблема такова. Не передаются параметры с формы на форму. В проекте есть...

Передать данные во вторую форму
Есть Form1 и Form2 в процессе выполнения в Form1 получаю переменную int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru