コンボボックスに.pdfを表示する最も簡単な方法は何ですか?

私はコンボボックスにファイルを読み込んでいます...

private void Form1_Load(object sender, EventArgs e)
        {
            Directory.CreateDirectory(@"X:\BookStoreProject\WindowsFormsApplication2\Resources\PDF_Books");

            DirectoryInfo dir = new DirectoryInfo(@"X:\BookStoreProject\WindowsFormsApplication2\Resources\PDF_Books");
            FileInfo[] files = dir.GetFiles("*.pdf");
            foreach (FileInfo file in files)
            { 
                cboPDF.Items.Add(file);
            }

私は今コンボボックスからpdfを選択し、pdfをロードしたいと思う。しかし何らかの理由で私が試したすべてがうまくいかない。私はコマンドを実行することができます(これは別のプロジェクトに注意してください)...

System.Diagnostics.Process.Start(@"C:\Users\Shane\Documents\Visual Studio 2010\Projects\Beginning Hibernate, 2006.pdf");

それは直接文字列のパスを与えていますが、私の問題は多分これは間違った方向ですパスを再作成しようとしていますか?

2
なぜそれが間違った方向になると思いますか?ファイルにアクセスするには、ある種のパスが必要です。
追加された 著者 svick,
注:私はこのような完全な文字列を書く必要はありません、私はそれがまだ利用可能なソースファイルに新しいPDFブックを追加するように文字列を格納するために探しています。後で、C#、C ++、Javaなどのフォームに選択肢を含むソースファイルを追加してください。そのため、各パスを書き換えて、コンボボックスの選択項目を一致させたいと思っています。
追加された 著者 Shane,

2 答え

Process.Start("Path_OF_Pdf.Exe", System.IO.Path.Combine("@X:\BookStoreProject\WindowsFormsApplication2\Resources\PDF_Books",cboPDF.SelectedItem.ToString()));

最初のパラメータとしてPDFのインストールパスを指定し、pdfファイルの名前を秒として指定する必要があります。

EDIT from Shane's Comments

string w = System.IO.Path.Combine(@"X:\BookStoreProject\WindowsFormsApplication2\Resources\‌​PDF_Books\", cboPDF.SelectedItem.ToString());
 System.Diagnostics.Process.Start(w);
2
追加された
パスの最後に '\'を追加する必要はありません。Path.Combineはこれを行います
追加された 著者 Surjit Samra,
今何のエラーが出ていますか?
追加された 著者 Surjit Samra,
うん、それも完璧に有効です;)
追加された 著者 Surjit Samra,
私はこれを試して、まだエラーが発生します。 "" X:\ BookStoreの前に@を追加すると、エスケープ時のエラーを止めて、System.Diagnostics.Process.StartをPrecessとして追加します。
追加された 著者 Shane,
私はまた、パスの最後に\を追加しました。なぜなら、cboPDFからの文字列がパスに入ると考えていたからです。ここに何を与えるのか分かりませんか?
追加された 著者 Shane,
私は少しそれを変更し、これのように動作するようになった............ string w = System.IO.Path.Combine(@ "X:\ BookStoreProject \ WindowsFormsApp‌ lication2 \ Resources \ ‌ PDF_Books \ "、cboPDF.SelectedItem.ToString()); System.Diagnostics.Process.Start(w);
追加された 著者 Shane,

私が正しく理解していれば、コンボボックスから完全なパスを得ることに問題がありますか?

これが実際に問題である場合、これを行う最も簡単な方法は、ファイルへのフルパスと表示するファイルの「フレンドリーな」名前の両方を含む新しいクラスを作成することです。この例では、.Pathと.Nameという名前を付けてみましょう。各ファイルに対してこれらのクラスの1つをインスタンス化し、必要な方法で.Pathおよび.Nameプロパティを設定し、このインスタンスをコンボボックスに追加します。 ComboBoxの.DisplayMemberプロパティを "Name"に、.valueMemberプロパティを "Path"に設定します。 ComboBox.SelectedValueを呼び出すと、.Nameプロパティにフレンドリ名が表示されますが、.Pathプロパティに配置されたものはすべて返されます。 ComboBox.SelectedValueを使用してアイテムのパスを取得するだけです。

これが実際に問題を抱えていない場合は、質問を明確にして、より良くお手伝いできるようにしてください。

1
追加された
ブラッドリーのおかげで、それは私の問題ではありませんでしたが、私はこのプロジェクトを成長させるときにクラスを作成する可能性が高いです。
追加された 著者 Shane,