3 место Создание и работа с собственными формами (окнами) Windows через сниппеты C#.

Rainsteel

Client
Регистрация
08.04.2015
Сообщения
102
Благодарностей
9
Баллы
18
System.Windows.Forms.Form Form = new System.Windows.Forms.Form();

System.Windows.Forms.RichTextBox textb0 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb1 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb2 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb3 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb4 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb5 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb6 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb7 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb8 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb9 = new System.Windows.Forms.RichTextBox();
System.Windows.Forms.RichTextBox textb10 = new System.Windows.Forms.RichTextBox();

Form.Controls.Add(textb0);
Form.Controls.Add(textb1); Form.Controls.Add(textb2);
Form.Controls.Add(textb3); Form.Controls.Add(textb4);
Form.Controls.Add(textb5); Form.Controls.Add(textb6);
Form.Controls.Add(textb7); Form.Controls.Add(textb8-);
Form.Controls.Add(textb9); Form.Controls.Add(textb10);

Form.ShowDialog();


Мне надо сделать так чтоб код был компактнее, думал задать переменную textb.... через цикл, но никак не получается
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 682
Баллы
113
За цените тестовый вариант. форма живущая параллельно потоку :-)
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
379
Баллы
63
За цените тестовый вариант. форма живущая параллельно потоку :-)
Предложение было бы более осмысленным, если бы вы поделились этим с комьюнити, а так это выглядит "смотрите какой у меня член". Кто-то позавидует или посмеется, но в целом все равно)
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 682
Баллы
113
Предложение было бы более осмысленным, если бы вы поделились этим с комьюнити, а так это выглядит "смотрите какой у меня член". Кто-то позавидует или посмеется, но в целом все равно)
аха, про член круто сказано.
вот здесь продолжение https://zennolab.com/discussion/threads/interaktivnoe-okno-v-shablone-zennopostera-malenkij-primer.69574/
посмотришь, оставь комментарий :-)
 
  • Спасибо
Реакции: ТРОН и bizzon

sociohacker

Client
Регистрация
08.10.2018
Сообщения
89
Благодарностей
25
Баллы
18
Доброе утро!

А можно такие окошки выводить в Project Maker?

Потестил простое текствое окно — в РМ оно не вылазит. Но, может, есть какой-то способ?
 

DrunkDeath

Client
Регистрация
24.12.2014
Сообщения
564
Благодарностей
379
Баллы
63
Доброе утро!

А можно такие окошки выводить в Project Maker?

Потестил простое текствое окно — в РМ оно не вылазит. Но, может, есть какой-то способ?
Они отлично и в пм выскакивают
 

0LEzhka

Client
Регистрация
08.08.2019
Сообщения
41
Благодарностей
4
Баллы
8
нужно простое диалоговое окно кнопка. при нажатии на кнопку идет дальше. пока не нажмешь ждет.
заранее спасибо
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 241
Благодарностей
1 799
Баллы
113

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
348
Благодарностей
51
Баллы
28
а как в алерты добавить переменную?

вот такой код:

C#:
System.Windows.Forms.MessageBox.Show("Спасибо. Осталось: project.Variables["number_report"].Value шт.");
выдает ошибку:

Компиляция кода Ошибка в действии "CS1525" "Invalid expression term ')'". [Строка: 0; Cтолбец: 142]
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 682
Баллы
113
а как в алерты добавить переменную?

вот такой код:

C#:
System.Windows.Forms.MessageBox.Show("Спасибо. Осталось: project.Variables["number_report"].Value шт.");
выдает ошибку:

Компиляция кода Ошибка в действии "CS1525" "Invalid expression term ')'". [Строка: 0; Cтолбец: 142]
C#:
System.Windows.Forms.MessageBox.Show("Спасибо. Осталось: "+ project.Variables["number_report"].Value+" шт.");
 
  • Спасибо
Реакции: ukrainec2014

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
348
Благодарностей
51
Баллы
28

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 682
Баллы
113

YANKEES

Новичок
Регистрация
05.04.2016
Сообщения
18
Благодарностей
1
Баллы
3
Привет всем, подскажите как передать CheckBox
----------------------------------------------------------
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Выбор фото";
F.Width=1000; //- задает ширину формы в пикселях
F.Height=900; //- задает высоту формы в пикселях
var location_x = 12;
var location_y = 12;
var checkbox_x = 12;
var checkbox_y = 200;
var list = project.Lists["img_temp"];
lock(SyncObjects.ListSyncer)
{
for(int i=0; i < list.Count; i++)
{

if (i==0){location_x = 12;} else {location_x = location_x+195;}
if (i==5){location_y = location_y+225; location_x = 12;}
if (i==10){location_y = location_y+225; location_x = 12;}

System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
pictureBox.Location= new System.Drawing.Point(location_x, location_y);//left,top
pictureBox.Size = new System.Drawing.Size( 188, 188 );
pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
pictureBox.ImageLocation = Macros.TextProcessing.Replace(list, ".jpg", "_bt.jpg", "Text", "All");


var checkbox = new System.Windows.Forms.CheckBox { Name = list, Text = "X" };
F.Controls.Add(checkbox);


if (i==0){checkbox_x = 12;} else {checkbox_x = checkbox_x+195;}
if (i==5){checkbox_y = checkbox_y+225; checkbox_x = 12;}
if (i==10){checkbox_y = checkbox_y+225; checkbox_x = 12;}
checkbox.Location = new Point(checkbox_x, checkbox_y);
F.Controls.Add(pictureBox);
}
}

//позиция Формы на экране
F.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
F.ShowDialog();
return 0;

////////////////////////////////////
Суть в том что сканируется категория где картинки и выводятся в форму, я должен отметить фото по средствам CheckBox а потом передать названия файлов в переменную через разделитель.
Подскажите как вывести в переменную
 

Вложения

  • 163,7 КБ Просмотры: 169

YANKEES

Новичок
Регистрация
05.04.2016
Сообщения
18
Благодарностей
1
Баллы
3
Проблему решил, может и коряво но как мог))) Если кому интересно вот результат:
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Выбор фото";
F.Width=1000;    //- задает ширину формы в пикселях
F.Height=900;    //- задает высоту формы в пикселях
var location_x = 12;
var location_y = 12;
var checkbox_x = 12;
var checkbox_y = 200;
var list = project.Lists["img_temp"];

for(int i=0; i < list.Count; i++)
    {

if (i==0){location_x = 12;} else {location_x = location_x+195;}
if (i==5){location_y = location_y+225; location_x = 12;}
if (i==10){location_y = location_y+225; location_x = 12;}
    
System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
pictureBox.Location= new System.Drawing.Point(location_x, location_y);//left,top
pictureBox.Size = new System.Drawing.Size(188, 188);
pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
pictureBox.ImageLocation = Macros.TextProcessing.Replace(list[i], ".jpg", "_bt.jpg", "Text", "All");

var checkbox = new System.Windows.Forms.CheckBox { Name = list[i], Text = "CH"+i};

if (i==0){checkbox_x = 12;} else {checkbox_x = checkbox_x+195;}
if (i==5){checkbox_y = checkbox_y+225; checkbox_x = 12;}
if (i==10){checkbox_y = checkbox_y+225; checkbox_x = 12;}
checkbox.Location = new Point(checkbox_x, checkbox_y);

F.Controls.Add(checkbox);
F.Controls.Add(pictureBox);
}


//позиция Формы на экране
F.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
F.ShowDialog();
for(int i=0;i<F.Controls.Count;i++)
{
    if(F.Controls[i].Text.ToString().Contains("CH"))
    {
        if(F.Controls[i].ToString().Contains("1")){
        //project.SendInfoToLog(F.Controls[i].Name.ToString());
        project.Variables["checked_img"].Value = project.Variables["checked_img"].Value+F.Controls[i].Name.ToString()+"::";
        }
    }
}   
return 0;
 
  • Спасибо
Реакции: dohrelion

dohrelion

Client
Регистрация
22.03.2018
Сообщения
129
Благодарностей
34
Баллы
28
Проблему решил, может и коряво но как мог))) Если кому интересно вот результат:
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Выбор фото";
F.Width=1000;    //- задает ширину формы в пикселях
F.Height=900;    //- задает высоту формы в пикселях
var location_x = 12;
var location_y = 12;
var checkbox_x = 12;
var checkbox_y = 200;
var list = project.Lists["img_temp"];

for(int i=0; i < list.Count; i++)
    {

if (i==0){location_x = 12;} else {location_x = location_x+195;}
if (i==5){location_y = location_y+225; location_x = 12;}
if (i==10){location_y = location_y+225; location_x = 12;}
   
System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox();
pictureBox.Location= new System.Drawing.Point(location_x, location_y);//left,top
pictureBox.Size = new System.Drawing.Size(188, 188);
pictureBox.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
pictureBox.ImageLocation = Macros.TextProcessing.Replace(list[i], ".jpg", "_bt.jpg", "Text", "All");

var checkbox = new System.Windows.Forms.CheckBox { Name = list[i], Text = "CH"+i};

if (i==0){checkbox_x = 12;} else {checkbox_x = checkbox_x+195;}
if (i==5){checkbox_y = checkbox_y+225; checkbox_x = 12;}
if (i==10){checkbox_y = checkbox_y+225; checkbox_x = 12;}
checkbox.Location = new Point(checkbox_x, checkbox_y);

F.Controls.Add(checkbox);
F.Controls.Add(pictureBox);
}


//позиция Формы на экране
F.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
F.ShowDialog();
for(int i=0;i<F.Controls.Count;i++)
{
    if(F.Controls[i].Text.ToString().Contains("CH"))
    {
        if(F.Controls[i].ToString().Contains("1")){
        //project.SendInfoToLog(F.Controls[i].Name.ToString());
        project.Variables["checked_img"].Value = project.Variables["checked_img"].Value+F.Controls[i].Name.ToString()+"::";
        }
    }
}  
return 0;

Код пригодился, но как CheckBox поменять на RadioButton ? Попробывал сам но теперь ни хера не передается в переменную. Прошу помочь
 

artur23

Client
Регистрация
14.04.2014
Сообщения
205
Благодарностей
15
Баллы
18
а есть вариант - просто закрыть форму окна при нажатии на кнопку "ENTER" - так и не нашел решения в инете...
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
а есть вариант - просто закрыть форму окна при нажатии на кнопку "ENTER" - так и не нашел решения в инете...
Создай кнопку на форме, если у тебя ее нет, пример:
C#:
//создаем кнопку
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "Сохранить";
//положение в окне
button.Location = new System.Drawing.Point(100,85);
//размер кнопочки
button.Size=new System.Drawing.Size(75, 25);
//кидаем на форму
F.Controls.Add(button);
//описываем событие для клика по кнопке
button.Click+= delegate(object sender, System.EventArgs e)
{
        //говорим в какую переменную положить
        project.Variables["SMS"].Value = textb.Text;
        F.Dispose(); //Dispose – это уничножение объекта. Есть аналог Close, но Dispose //выгрузит форму из памяти
};
//отправка по enter
F.AcceptButton= button;
При нажатии ENTER форма закроется.
 

artur23

Client
Регистрация
14.04.2014
Сообщения
205
Благодарностей
15
Баллы
18
Создай кнопку на форме, если у тебя ее нет, пример:
C#:
//создаем кнопку
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "Сохранить";
//положение в окне
button.Location = new System.Drawing.Point(100,85);
//размер кнопочки
button.Size=new System.Drawing.Size(75, 25);
//кидаем на форму
F.Controls.Add(button);
//описываем событие для клика по кнопке
button.Click+= delegate(object sender, System.EventArgs e)
{
        //говорим в какую переменную положить
        project.Variables["SMS"].Value = textb.Text;
        F.Dispose(); //Dispose – это уничножение объекта. Есть аналог Close, но Dispose //выгрузит форму из памяти
};
//отправка по enter
F.AcceptButton= button;
При нажатии ENTER форма закроется.
спасибо, буду разбираться....
 

artur23

Client
Регистрация
14.04.2014
Сообщения
205
Благодарностей
15
Баллы
18
Создай кнопку на форме, если у тебя ее нет, пример:
C#:
//создаем кнопку
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "Сохранить";
//положение в окне
button.Location = new System.Drawing.Point(100,85);
//размер кнопочки
button.Size=new System.Drawing.Size(75, 25);
//кидаем на форму
F.Controls.Add(button);
//описываем событие для клика по кнопке
button.Click+= delegate(object sender, System.EventArgs e)
{
        //говорим в какую переменную положить
        project.Variables["SMS"].Value = textb.Text;
        F.Dispose(); //Dispose – это уничножение объекта. Есть аналог Close, но Dispose //выгрузит форму из памяти
};
//отправка по enter
F.AcceptButton= button;
При нажатии ENTER форма закроется.
Получилось!!! Огромное спасибо!
 
  • Спасибо
Реакции: lx2003 и Koqpe

Vavildi

Client
Регистрация
29.02.2016
Сообщения
188
Благодарностей
103
Баллы
43
Друзья. Я хочу чтобы данные в эту переменную попадали. То есть мне нужно чтобы в переменную постоянно можно было дописывать или изменять данные, через это окно.

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

System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Наша форма";

//создаем richтекстбокс
System.Windows.Forms.RichTextBox rtbox = new System.Windows.Forms.RichTextBox();
//указываем местоположение
rtbox.Location = new System.Drawing.Point(25,25);
//указываем размеры
rtbox.Width =200;
rtbox.Height = 300;
//крепим на форму
F.Controls.Add(rtbox);

//Устанавливаем значение
rtbox.Text=project.Variables["test"].Value;

//показываем форму
F.ShowDialog();

//берем введеное значение
return rtbox.Text;
 

dohrelion

Client
Регистрация
22.03.2018
Сообщения
129
Благодарностей
34
Баллы
28
Друзья. Я хочу чтобы данные в эту переменную попадали. То есть мне нужно чтобы в переменную постоянно можно было дописывать или изменять данные, через это окно.

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

System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Наша форма";

//создаем richтекстбокс
System.Windows.Forms.RichTextBox rtbox = new System.Windows.Forms.RichTextBox();
//указываем местоположение
rtbox.Location = new System.Drawing.Point(25,25);
//указываем размеры
rtbox.Width =200;
rtbox.Height = 300;
//крепим на форму
F.Controls.Add(rtbox);

//Устанавливаем значение
rtbox.Text=project.Variables["test"].Value;

//показываем форму
F.ShowDialog();

//берем введеное значение
return rtbox.Text;
На-те-вам, если я правильно понял.


System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = project.Variables["name_1"].Value;// текст заголовка
F.TopMost = true;// по верх всех окон
F.Size=new System.Drawing.Size(430, 150);// размеры окна
F.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;;// позиция окна


//Лейбл2
System.Windows.Forms.Label label2 = new System.Windows.Forms.Label();
label2.Text = "ля ля ля";
label2.Location = new System.Drawing.Point(45,35);
label2.AutoSize=true;
F.Controls.Add(label2);


//создаем список
System.Windows.Forms.TextBox textb = new System.Windows.Forms.TextBox();
//Говорим куда хотим его поставить
textb.Location = new System.Drawing.Point(50,50);
textb.Text = project.Variables["name_3"].Value;
//указываем его ширину, если нужно
textb.Width=250;
//крепим его на форму
F.Controls.Add(textb);


//создаем кнопку
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "Ок";
//положение в окне
button.Location = new System.Drawing.Point(310,50);
//размер кнопочки
button.Size=new System.Drawing.Size(50, 20);
//кидаем на форму
F.Controls.Add(button);
//Описание события, улавливающее нажатие Enter в текстбоксе
button.Click+= delegate(object sender, System.EventArgs e)
{
F.Close();
};

F.ShowDialog();

//говорим в какую переменную положить textb
project.Variables["name_2"].Value = textb.Text;
 
  • Спасибо
Реакции: Vavildi

fedcen

Client
Регистрация
06.09.2017
Сообщения
16
Благодарностей
3
Баллы
3
Просто текст можно вывести вот так:

C#:
//создаем надпись
System.Windows.Forms.Label lbla = new System.Windows.Forms.Label();
lbla.Location = new System.Drawing.Point(50,25);
lbla.Text = "Это простой текст на форме";
lbla.Width = 180;
F.Controls.Add(lbla);
 

fedcen

Client
Регистрация
06.09.2017
Сообщения
16
Благодарностей
3
Баллы
3
Запуск формы для выбора директории без костылей:

C#:
//создаем форму
System.Windows.Forms.FolderBrowserDialog F = new System.Windows.Forms.FolderBrowserDialog();
// Прячем кнопку создания новой папки
F.ShowNewFolderButton = false;
// устанавливаем директорию, выбранную по умолчанию
F.SelectedPath = project.Variables["folder_1"].Value;
// добавляем информацию с описанием что ожидается
F.Description  = "Выберите правильную директорию";

if(F.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    //говорим в какую переменную положить
    project.Variables["folder_2"].Value =  F.SelectedPath;
}

F.Dispose(); //Dispose – это уничножение объекта. Есть аналог Close, но Dispose выгрузит форму из памяти
return 0;
 
  • Спасибо
Реакции: artur23

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 013
Благодарностей
29
Баллы
48
Подскажите почему в ProjectMarker все хорошо отрабатывает, а в ZennoPoster ни каких окон не вылезает, во много потоке. Просто работа останавливается
 
Последнее редактирование:

dohrelion

Client
Регистрация
22.03.2018
Сообщения
129
Благодарностей
34
Баллы
28
А собственно, что он должен делать? Причина может быть любая.
F.TopMost = true;// по верх всех окон - это добавляешь на форму
 
  • Спасибо
Реакции: SlavenTyz

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 013
Благодарностей
29
Баллы
48
Может подскажите как увеличить ширину этого поля
77265
 

dohrelion

Client
Регистрация
22.03.2018
Сообщения
129
Благодарностей
34
Баллы
28

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 013
Благодарностей
29
Баллы
48
Не помогло
77267
 

dohrelion

Client
Регистрация
22.03.2018
Сообщения
129
Благодарностей
34
Баллы
28
Дай весь код, кто знает что у тебя далее
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 013
Благодарностей
29
Баллы
48

Вложения

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)