Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Открытие файла при старте программы


Автор: djezul 13.12.2009, 01:28
Добрый вечер всем, мне нужно чтобы когда я выставил в свойствах файла (открывать моей прогой) при старте программы текст бокс заполнялся открытым файлом, подскажите как реализовать пожалуйста.

Автор: diadiavova 13.12.2009, 08:27
адрес файла передаётся программе как аргумент командной строки под индексом 1

Автор: djezul 13.12.2009, 22:06
А можно пример пожалуйста, потому что в книге найти не могу как это реализовать, пытаюсь сделать примерно так 
Код

 public MainWindow(string[] args)
        {
            if (args[1] == "")
            {
                InitializeComponent();
            }
            else
            {
                readFile(args[1]);
            }
            Text.Text = "";
        }

У меня WPF приложение. Погуглил, тоже ничего нормального не нашёл(возможно плохо искал)

Автор: diadiavova 13.12.2009, 22:18
Это надо делать после инициализации компонентов, а не вместо и проверять надо на наличие аргументов, а не на содержимое и в случае если такой аргумент имеется проверить файл ли это.
Код

var args = Environment.GetCommandLineArgs();
if(args.length > 1)
{
    var fileName = args[1];
    try
    {
        //код загрузки
    }
    catch
    {
        //обработка ошибки(если файла не существует или строка вообще не является имнем файла)
    }
}
Если это делается в методе мэйн, то аргументы можно и твоим способом получить, но можно это сделать к примеру в обработчике события Load формы.

Автор: djezul 13.12.2009, 22:40
А можете пожалуйста пример аргументов которые получает программа, так как сделал так 
Код

public MainWindow()
        {
            InitializeComponent();
            var args = Environment.GetCommandLineArgs();
            if(args.Length > 1)
            {
                var fileName = args[1];
                try
                {
                    readFile(args[1]);
                }
                catch(IOException ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            Text.Text = "";
        }

не работает, хочу посмотреть в дебагере (задав аргумент вручную), возможно есть другой способ , использую VS2010 beta 2

Добавлено через 54 секунды
Ах да, исключение не вылетает.

Автор: diadiavova 13.12.2009, 22:53
Это не впф и не 2010, но принцип тот же, открой с помощью этой проги текстовый файл и он отобразится в поле(без учёта кодировки ессно).
Цитата(djezul @  13.12.2009,  22:40 Найти цитируемый пост)
Ах да, исключение не вылетает. 

Оно и не должно вылетать. Исключение вылетит если, например, программа будет запущена из коммандной строки и ей будет переданкакой-нибудь "левый" аргумент, а так у тебя просто программа получает один аргумент(имя файла самой программы), то есть условие args.Length > 1 не выполняется.

Автор: djezul 13.12.2009, 23:33
Спасибо, ваша прога действительно работает, но у меня всё равно что то не так, и я не пойму зачем вам Text , я вроде уже по разному перепробовал  но вылетает 
Код

'The invocation of the constructor on type 'WpfFileReader.MainWindow' that matches the specified binding constraints threw an exception.' Line number '3' and line position '9'.


Вроде делаю всё как у вас
Код

public MainWindow()
        {
            InitializeComponent();
            var args = Environment.GetCommandLineArgs();
            if (args.Length > 1)
            {
                try
                {
                    Text.AppendText(File.ReadAllText(args[1]));
                }
                catch(IOException ex)
                {
                    MessageBox.Show(ex.ToString());
                }
            }
            Text.Text = args[1].ToString();
        }

Автор: diadiavova 13.12.2009, 23:48
Цитата(djezul @  13.12.2009,  23:33 Найти цитируемый пост)
Вроде делаю всё как у вас

Не всё. У тебя сначала загружается документ, а потом ты в этот текстбокс добавляешь текст. Уменя это делается в блоке else, а у тебя безо всяких условий. В впф и 10-й студии тоже всё работает

Автор: djezul 14.12.2009, 00:06
Да, действительно всё дело было в ветке else, спасибо большое , что потратили время на решение моей проблемы!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)