Перейти к содержимому

Как запустить другую форму c

  • автор:

Как вызвать форму в 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

Rou1997

но если закрыть вторую форму, то программа продолжает работать так как первая форма не закрыта

У второй формы есть событие, кажется, 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;
  • >
  • >
  • >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *