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

суть не во времени , а в фиче самой так сказать напоминание клиенту.
 
Как сделать, чтобы форма открывалась в определенном месте на рабочем столе? У меня каждый раз в новой точке открывается. Пробовал через Form.DesktopLocation не получается. И второй вопрос, можно ли задать на escape - закрытие формы, как при нажатии крестика, без создания дополнительных кнопок в форме?
 
Как сделать, чтобы форма открывалась в определенном месте на рабочем столе? У меня каждый раз в новой точке открывается. Пробовал через Form.DesktopLocation не получается. И второй вопрос, можно ли задать на escape - закрытие формы, как при нажатии крестика, без создания дополнительных кнопок в форме?
По поводу открытия в разных местах - я делал чтобы окно всегда было в центре.

1)
C#:
Развернуть Свернуть Копировать
Form form1 = new Form();
form1.StartPosition = FormStartPosition.CenterScreen;

2) Примерная конструкция. Набросал на коленке
C#:
Развернуть Свернуть Копировать
F.KeyDown += new KeyPressEventHandler(delegate (object sender,System.Windows.Forms.KeyEventArgs e){

   if (e.KeyCode == Keys.Escape)
    {
        this.Close();
    }

});
 
По поводу открытия в разных местах - я делал чтобы окно всегда было в центре.

1)
C#:
Развернуть Свернуть Копировать
Form form1 = new Form();
form1.StartPosition = FormStartPosition.CenterScreen;

2) Примерная конструкция. Набросал на коленке
C#:
Развернуть Свернуть Копировать
F.KeyDown += new KeyPressEventHandler(delegate (object sender,System.Windows.Forms.KeyEventArgs e){

   if (e.KeyCode == Keys.Escape)
    {
        this.Close();
    }

});
спасибо за помощь. только у меня оба кода не хотят работать. Если не затруднит, скинь пожалуйста полный код для центрирования формы, может я что-то не так делаю. А код с эскейпом не так важен, сейчас хочется научиться выводить форму в одном месте, идеально было бы по координатам, например 100 пикселей сверху и слева отступ, но в центре тоже устроит. Я заметил что каждая форма открывается немного со смещением вниз и вправо, причем смещение это всегда одинаковое, открывается примерно 10 раз с этим смещением и на одиннадцатый раз открываться начинает с того же места в верхнем левом углу. Может надо какие-то данные обнулять, чтобы не было такого?
 
Посмотри мою статью про 2gis. Там реализовано много вещей с формами
Спасибо за тему. Только в том твоем шаблоне форма тоже открывается каждый раз в новом месте, а не в центре
 
Помогите пожалуйста, как сделать чтобы при нажатии на кнопку "Да" переменной присваивалось значение "Yes", а при нажатии на кнопку "Нет" присваивалось значение "No"?
Код:
Развернуть Свернуть Копировать
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Наша форма";
//создаем кнопку
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "Да";
//положение в окне
button.Location = new System.Drawing.Point(50,50);
//размер кнопочки
button.Size=new System.Drawing.Size(75, 75);
//кидаем на форму
F.Controls.Add(button);
button.Click+= delegate(object sender, System.EventArgs e)
{
    F.Dispose();
};

System.Windows.Forms.Button button2 = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button2.Text = "Нет";
//положение в окне
button2.Location = new System.Drawing.Point(150,50);
//размер кнопочки
button2.Size=new System.Drawing.Size(75, 75);
//кидаем на форму
F.Controls.Add(button2);
button2.Click+= delegate(object sender, System.EventArgs e)
{
    F.Dispose();
};

//запускаем форму
F.ShowDialog();
return 0;
 
C#:
Развернуть Свернуть Копировать
button.Click+= delegate(object sender, System.EventArgs e)
{
    project.Variables["Переменная1"].Value = "222222"; // вот присваиваем значение
    F.Dispose();
};

Аналогично и для второй кнопки
 
Приветствую, помогите разобраться пожалуйста.
Скачал шаблон с сниппетами, запускаю и получаю ошибку:
Тип Время Сообщение
12:51:35 Компиляция кода Ошибка в действии "CS0266" "Неявное преобразование типа "System.Collections.Generic.List<string>" в "ZennoLab.InterfacesLibrary.ProjectModel.IZennoList" невозможно. Существует явное преобразование (возможно, отсутствует приведение)". [Строка: 25; Cтолбец: 10]
12:51:35 Компиляция кода Ошибка в действии "CS0103" "Имя "of" отсутствует в текущем контексте". [Строка: 22; Cтолбец: 5]
12:51:35 Компиляция кода Ошибка в действии "CS0103" "Имя "of" отсутствует в текущем контексте". [Строка: 26; Cтолбец: 36]

Копирую блок с кодом "чекбоксы" в другой шаблон где тоже есть блок с C#, и там он работает.
Почему так?
 
Если это два разных вопроса, то на первый ответ простой: ошибки в коде, которые нужно устранить. В другом проекте те или иные переменные могут быть по-другому объявлены, поэтому тот же код становится корректным. Сложно сказать больше.
 
Фигня какая-то, только что снова попобовал, теперь работает.

В связи с этим другой вопрос можно ли вывести изображение в форму?
 
А можно сделать так, чтобы форма сама закрывалась например через минуту, если ничего юзер не нажал, и тогда какое-то значение по умолчанию чтобы возвращалось
 
По поводу открытия в разных местах - я делал чтобы окно всегда было в центре.

1)
C#:
Развернуть Свернуть Копировать
Form form1 = new Form();
form1.StartPosition = FormStartPosition.CenterScreen;

2) Примерная конструкция. Набросал на коленке
C#:
Развернуть Свернуть Копировать
F.KeyDown += new KeyPressEventHandler(delegate (object sender,System.Windows.Forms.KeyEventArgs e){

   if (e.KeyCode == Keys.Escape)
    {
        this.Close();
    }

});
спасибо за помощь. только у меня оба кода не хотят работать. Если не затруднит, скинь пожалуйста полный код для центрирования формы, может я что-то не так делаю. А код с эскейпом не так важен, сейчас хочется научиться выводить форму в одном месте, идеально было бы по координатам, например 100 пикселей сверху и слева отступ, но в центре тоже устроит. Я заметил что каждая форма открывается немного со смещением вниз и вправо, причем смещение это всегда одинаковое, открывается примерно 10 раз с этим смещением и на одиннадцатый раз открываться начинает с того же места в верхнем левом углу. Может надо какие-то данные обнулять, чтобы не было такого?
Тоже ломал голову над 1 (По поводу открытия в разных местах)
Эта строчка
Код:
Развернуть Свернуть Копировать
form1.StartPosition = FormStartPosition.CenterScreen;
Должна быть такой
Код:
Развернуть Свернуть Копировать
form1.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
 
Последнее редактирование:
Cупер! Буду изучать..как раз хотел C# pаняться вплотную!
 
Подскажите а в Демо версии можно работать с С#, не получается запустить скаченный здесь проект. Нет режима отладки C# в проектменеджере.
 
Подскажите а в Демо версии можно работать с С#, не получается запустить скаченный здесь проект. Нет режима отладки C# в проектменеджере.

Отладки нет не в демке. Её убрали вообще из программы. А в демке код работает ровно так же, как и в полной версии программы.
 
6) Листбоксы
Код инициализации
Код:
Развернуть Свернуть Копировать
//создаем листбокс
System.Windows.Forms.ListBox listb = new System.Windows.Forms.ListBox();
//указываем его размеры
listb.Width=150;
listb.Height=150;
//Указываем положение на форме
listb.Location = new System.Drawing.Point(30,30);
//кидаем на форму
F.Controls.Add(listb);
Посмотреть вложение 5338

Как вставить в листбокс свои элементы.
Код:
Развернуть Свернуть Копировать
//указываем список, в котором лежат нужные нам значения
var list = project.Lists["Список 1"];
// первый вариант наполнения
foreach(string data in list)//для каждой строки data в списке list
{
    listb.Items.Add(data);//добавить объект на листбокс
}
Или так
Код:
Развернуть Свернуть Копировать
//указываем список, в котором лежат нужные нам значения
var list = project.Lists["Список 1"];
// второй вариант наполнения
listb.Items.AddRange(list.ToArray());

При помощи этого кода – мы получаем выбранное значение
Код:
Развернуть Свернуть Копировать
//получаем значение в переменную
project.Variables["test"].Value = listb.SelectedItem.ToString();
//или так
return listb.SelectedItem;

Посмотреть вложение 5339
Подскажите, пожалуйста, как сделать так, что бы в полученном результате, была возможность выбрать не одну строку, а несколько, зажав кнопку ctrl ?
 
Ребят подскажите ! Сделал копипастом код из мануала .... Форму рисует а вот кнопку или текст не делает.
 
Здравствуйте! Подскажите кто пробовал открыть свой фаил. У кого работает? Очень нужно. Не как я не могу понять в чем проблема!!!
Спасибо
 
4) Радиобаттоны

Код с комментариями
Код:
Развернуть Свернуть Копировать
//создаем первый радиобаттон
System.Windows.Forms.RadioButton rb1 = new System.Windows.Forms.RadioButton();
//присваиваем значение
rb1.Text="кнопочка 1";
//говорим куда поставить
rb1.Location = new System.Drawing.Point(5,5);
//добавляем rb1 на форму
F.Controls.Add(rb1);
Посмотреть вложение 5326
Думаю, не секрет, что одного будет маловато) и нам нужно еще парочку

Код:
Развернуть Свернуть Копировать
//создаем первый радиобаттон
System.Windows.Forms.RadioButton rb1 = new System.Windows.Forms.RadioButton();
//создаем второй радиобаттон
System.Windows.Forms.RadioButton rb2 = new System.Windows.Forms.RadioButton();
//создаем третий радиобаттон
System.Windows.Forms.RadioButton rb3 = new System.Windows.Forms.RadioButton();

//присваиваем значение
rb1.Text="кнопочка 1";
rb2.Text="кнопочка 2";
rb3.Text="кнопочка 3";
//говорим куда поставить
rb1.Location = new System.Drawing.Point(5,5);
rb2.Location = new System.Drawing.Point(5,25);
rb3.Location = new System.Drawing.Point(5,45);
//добавляем rb1 на форму
F.Controls.Add(rb1);
//добавляем rb2 на форму
F.Controls.Add(rb2);
//добавляем rb3 на форму
F.Controls.Add(rb3);
Посмотреть вложение 5327
[/CODE]
Подскажите пожалуйста как сделать что бы по клику на радиобаттон форма закрывалась сама а не по клику по крестику
 
Подскажите пожалуйста как сделать что бы по клику на радиобаттон форма закрывалась сама а не по клику по крестику
Ну наверное дописать нуна

  1. button.Click+= delegate(object sender, System.EventArgs e)
  2. {
  3. F.Dispose();
  4. };
 
Ну наверное дописать нуна

  1. button.Click+= delegate(object sender, System.EventArgs e)
  2. {
  3. F.Dispose();
  4. };
System.Windows.Forms.Form F = new System.Windows.Forms.Form();

F.Text = "Вставка IP";
// по верх всех окон
F.TopMost = true;
//создаем радиобаттоны
System.Windows.Forms.RadioButton rb1 = new System.Windows.Forms.RadioButton();
System.Windows.Forms.RadioButton rb2 = new System.Windows.Forms.RadioButton();


//присваиваем значение
rb1.Text="Да";
rb2.Text="Нет";

//размещаем радиобаттоны
rb1.Location = new System.Drawing.Point(0,25);
rb2.Location = new System.Drawing.Point(0,45);


//разрешаем нашим радиобаттонам иметь ширину, подходящую под содержимое
rb1.AutoSize=true;
rb2.AutoSize=true;


//Создаем два GroupBox (группирующих бокса)
System.Windows.Forms.GroupBox grbox1 = new System.Windows.Forms.GroupBox();

//назовем наши группы
grbox1.Text = "IP";

//говорим куда поставить групбоксы
grbox1.Location = new System.Drawing.Point(50,50);

//разрешаем им тянуться до подходящего размера
grbox1.AutoSize=true;

//добавляем радиобаттоны на групбокс1
grbox1.Controls.Add(rb1);
grbox1.Controls.Add(rb2);


//добавляем групбоксы на форму
F.Controls.Add(grbox1);

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


//Забираем значения в наши переменные

//Делаем цикл, в котором будут перебраны все значения от 0 до grbox1.Controls.Count
//grbox2.Controls.Count - это количество наших радиобаттонов, которые мы в него положили
//При этом при переборе - текущее значение - 0,1,2,3 или другое, будет находится в переменной i
for(int i=0;i<grbox1.Controls.Count;i++)
{
if( (((System.Windows.Forms.RadioButton)grbox1.Controls).Checked==true))
{
//устанавливаем значение переменной тест
project.Variables["a4"].Value=grbox1.Controls.Text;
//либо, если раскомментировать строку ниже - можно установить число а не значение
//project.Variables["test"].Value=i.ToString();
}
}


return 0;
И куда в этот код его вставить не получается что то
 
А как на одну форму закинуть текстбокс+кнопку (инфа из текстбокса идет в переменную, а кнопка просто закрывает окно) ?
 
Ну помогите мне, пожалуйста:)
 
А как на одну форму закинуть текстбокс+кнопку (инфа из текстбокса идет в переменную, а кнопка просто закрывает окно) ?
Код:
Развернуть Свернуть Копировать
System.Windows.Forms.Form F = new System.Windows.Forms.Form();
F.Text = "Форма";

//создаем текстбокс
System.Windows.Forms.TextBox textb = new System.Windows.Forms.TextBox();
//указываем местоположение
textb.Location = new System.Drawing.Point(100,100);
// добавляем его на форму
F.Controls.Add(textb);

//создаем кнопку
System.Windows.Forms.Button button = new System.Windows.Forms.Button();
//задаем имя чекбоксам
button.Text = "Кнопка";
//положение в окне
button.Location = new System.Drawing.Point(110,10);
//размер кнопочки
button.Size=new System.Drawing.Size(80, 30);
//кидаем на форму
F.Controls.Add(button);
//описываем событие для клика по кнопке
button.Click+= delegate(object sender, System.EventArgs e)
{
   project.Variables["Text"].Value = textb.Text;
     F.Dispose();
};


//отрисовываем форму
F.ShowDialog();
//или возвращаем в переменную по умолчанию
return textb.Text;
 
Тс спасибо за топик, много полезного для себя нашёл !
 

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