PDA

Просмотр полной версии : Диалог открытия файла из проекта



Дмитрий163
22.06.2018, 11:34
Реализован сетевой проект из 3 ПК. 1-серевер где крутится проект, 2 рабочие станции.
Для вызова диалога выбора файла (расположен на сервере) использую код:
string FileName = "";
OpenFileDialog of = new OpenFileDialog();
of.Filter = "txt files (*.txt)|*.txt" ;
of.FilterIndex = 2 ;
of.RestoreDirectory = true ;
of.InitialDirectory = "E:\\1C\\in";
if(of.ShowDialog(MasterSCADAHlp.Instance.MainWindo w) == DialogResult.OK)
{
FileName=of.FileName;
}
Проблема в том что при вызове окна диалога на рабочей станции окно открывается на сервере.
Подскажите как сделать так чтоб окно открывалось на рабочей станции.

SCADAMaster
22.06.2018, 12:02
Нужно положить скрипт в отдельный объект, и у него включить "Выполнять на всех".

Дмитрий163
22.06.2018, 12:34
Необходимо чтоб окно диалога открывалось поверх всех мнемосхем, каким образом выставить приоритет?

SCADAMaster
22.06.2018, 12:53
Простых решений нет.
https://stackoverflow.com/questions/4666580/how-can-i-set-topmost-at-the-savefiledialog-using-c
Так что лучше в проекте не используйте "Поверх всех окон".

Дмитрий163
25.06.2018, 10:09
Создал отдельный объект, ситуация следующая:
Если включаю "Выполнять на всех" - окно открывается на сервере
Если включаю принудительно "Компьютер1" - окно вообще не открывается

SCADAMaster
25.06.2018, 10:54
Назначать нужно именно на компьютере. Подробнее описано тут:
https://insat.ru/blog/naznachenie-ispolneniya-obektov-v-setevykh-proektakh/

Дмитрий163
25.06.2018, 10:55
Разобрался, надо команду на вызов диалога поместить в этот же объект.

Дмитрий163
25.06.2018, 13:03
Возник новый затык((
Как передать имя файла из объекта который выполняется на Комп1 (вкл "Выполнять на всех") в объект который сконфигурирован на выполнение как "Комп2"?
Путем прямой привязки и через команду (присвоить) не работает.

SCADAMaster
25.06.2018, 14:21
Зачем у вас стоит "Выполнять на всех"?
Посмотрите статью на которую мы вам дали ссылку.

Дмитрий163
26.06.2018, 08:19
Нужно положить скрипт в отдельный объект, и у него включить "Выполнять на всех".
Ваша рекомендация, как с этого объекта передать данные?

SCADAMaster
26.06.2018, 09:25
Такую передачу сделать не получится.
Зачем вам это требуется? Для чего нужно передать значение на другой компьютер?

Дмитрий163
26.06.2018, 10:07
Весь проект с чтением данных, управлением, архивированием выполняется на Компьютер1. На Компьютере2 необходимо открыть диалог выбора файла (файл лежит на Комп1), и передать имя файла в объект который выполняется на Комп1 прочитать из файла данные и передать на выполнение в другие объекты которые выполняются на Комп1.

SCADAMaster
26.06.2018, 10:41
А на компьютере 1 нужно использовать этот диалог?
Можно просто назначить этот объект исполнению на компьютере 2 - тогда значение между компьютерами будет нормально передаваться.

Дмитрий163
27.06.2018, 09:35
Компьютер1 используется как сервер к нему доступ только инженера. Диалог выбора файла нужен был для удобства работы Оператора на компьютере2 (его рабочее место). Сделал ручной ввод имени файла все работает.

SCADAMaster
27.06.2018, 10:17
ну вы тогда можете назначить этот исполнению на Компьютере 2.