C#. Как задать ссылку на сборку через проводник?

Автор Тема: C#. Как задать ссылку на сборку через проводник?  (Прочитано 13482 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Доброго времени суток, уважаемые форумчане! Ищу вашей помощи в решении такой вот задачи:
У меня есть два узла (две сборочные единицы), которые стыкуются между собой. Идея в том, что некоторые параметры в узлах (в месте их соединения) идентичны. Для того чтобы пользователь не вводил одни и те же цифры два раза, требуется реализовать операцию, что-то вроде"укажите сборку для считывания данных". Должно открываться окно проводника, где человек указывает, где на компьютере лежит сборка (данные в которой он уже заполнил), и программа оттуда берет необходимые параметры для импорта во вторую сборку. Не подскажите, как это делается, или хотя бы что гуглить?
В программировании я новичок...но ненадолго! ;)

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
OpenFileDialog что-ли?

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
OpenFileDialog что-ли?
Спасибо, вроде похоже. А вы не могли бы привести какой-нубудь пример использования "OpenFileDialog'?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
А вы не могли бы привести какой-нубудь пример использования "OpenFileDialog'?
Ну ведь хэлп же рулит:

Код - C# [Выбрать]
  1. public void TestFileDialog()
  2. {
  3.     Application oApp = ThisApplication;
  4.  
  5.     // Create a new FileDialog object.
  6.     FileDialog oFileDlg;
  7.     oApp.CreateFileDialog(out(oFileDlg));
  8.  
  9.     // Define the filter to select part and assembly files or any file.
  10.     oFileDlg.Filter = "Inventor Files (*.iam;*.ipt)|*.iam;*.ipt|All Files (*.*)|*.*";
  11.  
  12.     // Define the part and assembly files filter to be the default filter.
  13.     oFileDlg.FilterIndex = 1;
  14.  
  15.     // Set the title for the dialog.
  16.     oFileDlg.DialogTitle = "Open File Test";
  17.  
  18.     // Set the initial directory that will be displayed in the dialog.
  19.     oFileDlg.InitialDirectory = "C:/Temp";
  20.  
  21.     // Set the flag so an error will not be raised if the user clicks the Cancel button.
  22.     oFileDlg.CancelError = false;
  23.  
  24.     // Show the open dialog.  The same procedure is also used for the Save dialog.
  25.     // The commented code can be used for the Save dialog.
  26.     oFileDlg.ShowOpen();
  27.     // oFileDlg.ShowSave();
  28.  
  29.     System.Windows.Forms.MessageBox.Show("File " + oFileDlg.FileName + " was selected.", "Selected file");
  30. }
  31.  
  32.  

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Ну ведь хэлп же рулит:
Спасибо, Михаил. Но я почему-то не нашел в поиске объектного браузера инвентора данный класс, а откопал его в "System.Windows.Forms". Поэтому в хелпе и не пытался искать. Сейчас буду разбираться.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Но я почему-то не нашел в поиске объектного браузера инвентора данный класс
Ну это потому что такой динамический объект создается через метод:
Код - C# [Выбрать]
  1. oApp.CreateFileDialog(out(oFileDlg));
  2.  
Вот его там и нет в объектном браузере у Applicatioon.

а откопал его в "System.Windows.Forms"
Это конечно хорошо, но только там в System.Windows.Forms нет путей поиска в верхнем левом углу, как у родного окна, а без них не удобно.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Ну это потому что такой динамический объект создается через метод:
Я вероятно двусмысленно выразился. Я не нашел его в инвенторе до того, как задал вопрос. Не знаю, как я смог так накосячить. После вашего примера из хелпа, разумеется я  его откопал. Сижу разбираюсь. Еще раз спс.
В программировании я новичок...но ненадолго! ;)

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Михаил, а не подскажете, как отследить, что пользователь в открывшемся окне не выбрал ничего, чтобы код дальше не выполнять?
П.С. Свойство FileDialog.InsertMode?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
как отследить, что пользователь в открывшемся окне не выбрал ничего, чтобы код дальше не выполнять?
Ну дак если хэлп посмотреть, там свойство есть
FileDialog.FileName Property
Вот если после закрытия окна равно пустой строке, значит юзер ничего и не выбрал, просто нажал Esc и все.

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
П.С. Свойство FileDialog.InsertMode?
Это свойство чтобы окно имело вида не для открытия документа, а для вставки компонента в сборку. Внешний вид у этих окон немножко отличается.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
FileDialog.FileName Property
Вот если после закрытия окна равно пустой строке, значит юзер ничего и не выбрал, просто нажал Esc и все.

Ага, спасибо, не додумался. Михаил, подскажите пожалуйста, как с помощью свойства FileDialog.FileName задать ссылку на сборку? Ну в смысле как, зная путь документа инвентора создать на него ссылку? То ли не делал так никогда, то ли склероз - пол дня ковыряюсь уже, но ничего не выходит.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Ну в смысле как, зная путь документа инвентора создать на него ссылку?
В смысле создать ссылку? Ссылки разные бывают в разных местах.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
В смысле создать ссылку? Ссылки разные бывают в разных местах.
Извиняюсь за кривословие. Я хочу создать объект типа Inventor.AssambleyDocument и присвоить ему ссытку на объект, которые выирает пользователь в "FileDialog". Как я понимаю, делается это с помошью пути в свойстве FileDialog.FileName. Или я ошибаюсь?
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Как я понимаю, делается это с помошью пути в свойстве FileDialog.FileName.
Не понятно где оно делается, потому как на задание свойства FileDialog.FileName не реагирует. Так же в реестре есть ключи со свойствами, но там информация обновляется только после закрытия инвентора.
Поэтому видимо где то в переменной внутри инвентора последний выбранный файл запоминается.


Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Не понятно где оно делается
Хмм... Я почему-то был уверен, что есть команда, с помощью которой, зная путь к файлу сборки на компьютере, можно было бы установить ссылку на него. Ну в смысле из свойства FileDialog.FileName выковырнуть путь файлу, и потом им воспользоваться.
В программировании я новичок...но ненадолго! ;)