Как вызвать форму в C#?
Привет всем. Написал фтп, создал форму, кнопки сделал, по кнопкам прописал функции. Сначала было без main, добавил main, теперь не знаю, как с мэина вызвать форму.
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 FTP_lib; namespace Project1 < static void Main() < >public partial class Form1: Form < ftp_Manager newFtpManager = new ftp_Manager(); public Form1() < InitializeComponent(); >private void username_txtb_TextChanged(object sender, EventArgs e) < >private void Form1_Load_1(object sender, EventArgs e) < newFtpManager.ftp_Username = username_txtb.Text; newFtpManager.ftp_Password = password_txtb.Text; >private void getContent_Click(object sender, EventArgs e) < newFtpManager.getContent("ftp://youdomain.com"); >private void upload_file_Click(object sender, EventArgs e) < newFtpManager.UploadFile("ftp://yourdomain.com/filedestination", "C:\\myfile.exe"); >private void donwload_button_Click(object sender, EventArgs e) < newFtpManager.DownloadFile("ftp://ftp.mama.tomsk.ru/festival/", "C:\\Download"); >private void delete_file_Click(object sender, EventArgs e) < newFtpManager.DeleteFile("ftp://yourdomain.com/file.exe"); >> >
Отслеживать
51.4k 86 86 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
Как запустить другую форму c
Есть документ у которого имеются две формы документа. В зависимости от того, кто открывает документ (РольДоступна. ), нужно открыть одну или другую форму. Как это правильнее сделать?
сделать одну форму с панелями и управлять их видимостью
Документ.ПолучитьФорму(«твояФорма»).Открыть();
А те надо чтоб при отрытии от ролей — тогда либо панели либо изоляться над списками документа и перехватывать открытие там
самые минимальные усилия — основная форам одна. перед открытием проверять если роль неподходящая тогда открывать другую а эту в отказ ставить
Можно в списке документа что-то вроде
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
Если рольДоступна(«Твоя роль») Тогда
СтандартнаяОбработка=Ложь;
Документ.ПолучитьФорму(«твояФорма»).Открыть();
КонецЕсли;
КонецПроцедуры
Но остануться еще журналы документов и тд. геморою много — с панелями и видимостью проще
(6) + ввод на основании + копировании и тп
+(7) с панелями гемор имхо. лучше две формы и глушить первую(основную) и открывать вторую если нуно
(5) юзаю как раз такой метод
В основной форме:
// Процедура — обработчик события «ПриОткрытии» формы
//
Процедура ПриОткрытии()
Если РольДоступна(«МенеджерПоПродажам») Тогда
ФормаМенеджера = ЭтотОбъект.ПолучитьФорму(«ФормаДокументаМенеджера», ЭтаФорма, ЭтотОбъект.Ссылка);
ФормаМенеджера.Открыть();
ЭтаФорма.Закрыть();
КонецЕсли;
Но ИМХО это не красиво. Всё-таки грамотно рулить панелями наверное.
Немного не правильный код в (9). Надо так:
Если РольДоступна(«МенеджерПоПродажам») Тогда
ЭтаФорма.Закрыть();
ФормаМенеджера = ЭтотОбъект.ПолучитьФорму(«ФормаДокументаМенеджера»,, ЭтотОбъект.Ссылка);
ФормаМенеджера.Открыть();
КонецЕсли;
Но у меня фигня получается — если пользователь два раза открывает из списка один и тот же документ, то каждый открывается в новом окне. Почему не срабатывает «ЭтотОбъект.Ссылка» в ключе уникальности?
(9) дело ваше, вобше перед открытием нужно бы и не закрывать а отказ в истину ставить))) вобщем зависит от степень разницы форм. если различие не очень существенны и слои идут только на небольшую часть формы то разные слои возможно подойдут. а если слои ложаться на всю поверхность формы то я бы предпочел разные форма ибо для меня, например, важно что бы элемент управления с контрагентом имел назавние контрагент.
(10) для второй формы блокируй объект вручную и проверяй на блокировку перед открытием
(10) да, допустим сделаю так. но при второй попытке пользователя открыть тот же самый документ форма не будет искаться в списке открытых окон и «разворачиваться» для пользователя (как в классическом варианте), а просто можно будет вывести сообщение, что объект заблокирован, так ведь?
Почему не работает КлючУникальности?
мдамс.
а теперь продолжим мысль.
есть допустим документ.. бухи должны видеть счета, манагеры — вкладку «проект»
операторы — ни того ни другого
соотв. код в (10) ну никак не проканает.
я не говорю что он нерабочий,
имхо просто логически неверный.
(13) да это стандартная реакция для основной формы документа
(15) все проще, тут со своими документами только менеджер работает.
и всё-таки, почему (14)?
(17) При открытии создается другой экземпляр объекта. Можно попробовать открывать через ссылку, а не через объект, тогда будет одна и та же форма.
(17) хм а что именно не работает ? у меня все работает.
(18) Что значит «открыть через ссылку»?
(19) при использовании кода (10) один и тот же открываемый Заказ покупателя из списка открывается каждый раз в новом окне
Как в C# запустить другую форму и закрыть предыдущую?
Суть вопроса: Как правильно открыть вторую форму и закрыть первую?
Пробовал запускать вторую форму и закрывать первую, так:
form.Show(); this.Close();
но при этом после открытия второй формы приложение завершает работу. Если же сделать так:
form.Show(); this.Hide();
то первая форма как бы прячется, но если закрыть вторую форму, то программа продолжает работать так как первая форма не закрыта, а мне нужно завершить программу по закрытию второй формы.
- Вопрос задан более трёх лет назад
- 15572 просмотра
Комментировать
Решения вопроса 2

но если закрыть вторую форму, то программа продолжает работать так как первая форма не закрыта
У второй формы есть событие, кажется, Closed или FormClosed, в этом событии можно закрывать первую форму уже через Close, и приложение завершит работу.
немодальное диалоговое окно
Немодальное диалоговое окно используется для обмена информацией с пользователем. В отличии от модального диалогового окна, оно позволяет выполнить другую задачу, т.е. одновременно могут быть открыты несколько немодальных окон.
Для отображения немодального диалогового окна используется метод Show().
Копировать
FormNotModal1.cs
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0018
- public partial class FormNotModal1 : Form
- public FormNotModal1()
- InitializeComponent();
- >
- private void button1_Click( object sender, EventArgs e)
- label2.Text = textBox1.Text;
- >
- >
- >
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace _0018
- public partial class FormNotModal1 : Form
- public FormNotModal1()
- InitializeComponent();
- >
- private void button1_Click( object sender, EventArgs e)
- label2.Text = textBox1.Text;
- >
- >
- >