2016-07-21 6 views
1

Я довольно новый, но я хочу, чтобы иметь возможность передавать свое приложение на разные компьютеры. Очевидно, что путь к файлу будет другим, если я переведу его на другой компьютер. В этом приложении открывается шаблон для ввода. Я попытался сократить путь до нескольких наборов вещей, но вместо этого он пытается открыть файл из windows \ system32 \, а не в папку, в которой он сидит. Любые идеи о том, что я должен использовать для этого? Простой поиск дал мне множество вещей, таких как GetDirectory, но я не совсем уверен, где разместить его в моем уже написанном коде. Anyplace я пытаюсь получить несколько ошибок.Открыть файл в папке приложения

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; 
using Word = Microsoft.Office.Interop.Word; 

namespace WindowsFormsApplication2 
{ 


public partial class Form1 : Form 
{ 
    Word.Application objWord = new Word.Application(); 
    Word.Document objDoc; 
    public Form1() 
    { 
     InitializeComponent(); 
     objWord.Visible = true; 
     object isVisible = true; 
     object readOnly = true; 

     object Missing = System.Reflection.Missing.Value; 
     object fileName = @"release/MLA1.dotx"; 
     objDoc = objWord.Documents.Open(ref fileName, ref Missing, ref readOnly, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref Missing, ref isVisible, ref Missing, ref Missing, ref Missing, ref Missing); 

    } 


    private void textBox1_TextChanged(object sender, EventArgs e) 
    { 

    } 


    private void SearchReplace() 
    { 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 



     Word.Find findObject = objWord.Selection.Find; 
     findObject.ClearFormatting(); 
     findObject.Text = "Name"; 
     findObject.Replacement.ClearFormatting(); 
     findObject.Replacement.Text = textBox1.Text; 

     object replaceAll = Word.WdReplace.wdReplaceAll; 
     object missing = System.Reflection.Missing.Value; 
     findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref replaceAll, ref missing, ref missing, ref missing, ref missing); 

     findObject.ClearFormatting(); 
     findObject.Text = "Teacher"; 
     findObject.Replacement.ClearFormatting(); 
     findObject.Replacement.Text = textBox2.Text; 


     findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref replaceAll, ref missing, ref missing, ref missing, ref missing); 

     findObject.ClearFormatting(); 
     findObject.Text = "Class"; 
     findObject.Replacement.ClearFormatting(); 
     findObject.Replacement.Text = textBox3.Text; 


     findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref replaceAll, ref missing, ref missing, ref missing, ref missing); 

     findObject.ClearFormatting(); 
     findObject.Text = "Date"; 
     findObject.Replacement.ClearFormatting(); 
     findObject.Replacement.Text = textBox4.Text; 


     findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref replaceAll, ref missing, ref missing, ref missing, ref missing); 

     findObject.ClearFormatting(); 
     findObject.Text = "Title"; 
     findObject.Replacement.ClearFormatting(); 
     findObject.Replacement.Text = textBox5.Text; 


     findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref missing, ref missing, ref missing, ref missing, ref missing, 
      ref replaceAll, ref missing, ref missing, ref missing, ref missing); 

     foreach (Word.Section wordSection in objDoc.Sections) 
     { 
      foreach (Word.HeaderFooter wordHeader in wordSection.Headers) 
      { 
       Word.Range docRange = wordHeader.Range; 

       docRange.Find.ClearFormatting(); 
       docRange.Find.Text = "Name"; 
       docRange.Find.Replacement.ClearFormatting(); 
       docRange.Find.Replacement.Text = textBox1.Text; 


       docRange.Find.Execute(Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
          ref replaceAll, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
      } 
     } 

    } 

    private void label1_Click(object sender, EventArgs e) 
    { 

    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
    } 
} 
} 
+0

Связанные: http://stackoverflow.com/questions/867485/c-sharp-getting-the-path-of-appdata –

ответ

1

Попробуйте использовать Application.StartupPath

object fileName = Application.StartupPath + "release\\MLA1.dotx"; 

В режиме отладки вы могли бы сделать это, чтобы убедиться, что его ищет в корневой папке (что ех бы в на RunTime):

object fileName = Application.StartupPath.Replace("bin\Debug", String.Empty) + "release\\MLA1.dotx"; 
Смежные вопросы