C#でストアアプリ開発 - 画像の取得と一覧表示について

このQ&Aのポイント
  • Windows 8のストアアプリ開発において、C#を使用してピクチャフォルダに格納された画像を全件取得する方法について質問です。
  • また、取得した画像をGridViewコントロールで一覧表示し、画像をクリックすると全画面で表示する方法についても教えてください。
  • 現在、Directory.GetFilesメソッドを使用して取得を試みましたが、ストアアプリでは別の方法を使用する必要があるようです。また、GridViewにaddしただけではクリック操作を定義することができず、他の方法があるかもしれません。
回答を見る
  • ベストアンサー

C#でストアアプリ開発

現在、C#でwindows8のストアアプリ開発を行っている者なのですが、以下の方法が分からなくて困っております。どなたか詳しい方がおられましたら、ぜひ解答をお願いいたします。 (1)ピクチャフォルダ等に格納した画像(サブフォルダも含む)を全件取得 (2)GridViewに取得した画像を、一覧表示し、画像をクリックすると全画面で表示する 以下詳細 (1)ピクチャフォルダに格納した画像(サブフォルダも含む)を全件取得する方法は、.NET4.5でサポートされている、Directory.GetFilesメソッドを使用すれば出来ると思っていたのですが、どうやらできないようなのです。ストアアプリでは、別のメソッドを使用するのでしょうか?(http://dobon.net/vb/dotnet/file/getfiles.html) (2)GridViewに取得した画像を、一覧表示するについてですが、GridViewコントロールに画像をaddした場合、表示はされるのですが、画像をクリックした場合の操作をどのように定義すればよいのかわかりません。。。そもそもGridViewにaddしただけでは、表示されるだけで、クリックした場合の操作を書けないのでしょうか?また、ほかに何か良い方法があるのでしょうか? 分かりにくい文章で申し訳ありませんが、回答お待ちしております。

質問者が選んだベストアンサー

  • ベストアンサー
  • x-1919
  • ベストアンサー率52% (91/173)
回答No.1

子どもに Surface Pro を取られてしまって試せないのですが、 [Windows ストア アプリのファイル アクセスとアクセス許可] http://msdn.microsoft.com/ja-jp/library/windows/apps/hh967755.aspx ここら辺の情報は (1) の助けになりますかね。

yamada1979
質問者

お礼

教えて頂いたページが非常に有意義で、とても助かりました!ご回答ありがとうございました!

関連するQ&A

  • ストアアプリ開発 C# ListViewについて

    ストアアプリ開発 C#初心者です。 サーバーからデータ取得後、 ListViewにデータを追加したいのですがよくわかりません。 ListViewに表示させたいのは日付、タイトル、画像です。 xaml↓ <ListView Grid.Row="1" x:Name="ListView1"></ListView> C# foreach (var item in blog_list){ ListViewItem addItem = new ListViewItem(); addItem.Tag = item.GetObject().GetNamedString("id"); addItem.Content = item.GetObject().GetNamedString("name"); ListView1.Items.Add(addItem); } 本当に初心者で申し訳ないのですがわかりやすい 解説等してるサイトありましたら教えてください。

  • My Picture で画像が一覧表示されなくなった

    WindwsME-office2000をつかっています。My Pictureというフォルダに格納したファイル が、急にファイル名の表示だけになり、画像が一覧表示されなくなりました。どうすれば元のようにフォルダを開いただけで画像が見られるのでしょうか? よろしくお願いします。

  • VB.NETの配列の限界を教えてください

    VB.NETで 「指定されたフォルダのファイルと、そのサブフォルダにあるファイルとフォルダの一覧を取得する」というロジックを組んでいます。 サブフォルダはあればあるだけしたまで取得していくように再帰的になっています。 そのフォルダのファイルを取得するのに Dim s() as string s=System.IO.Directory.GetFiles("C:\") としているのですが、その時にファイルの数に制限がついてしまうのでしょうか? 例えば、配列要素数に限界があるとか、Directory.GetFiles自体の取得できる数に限界があるとか・・・ あるとすれば、配列要素の最大数の限界と、マシン自体のメモリの問題(?)が思いつくのですが。 ご存じの方がいらっしゃったら、お願いします。

  • Windows8.1 フォトアプリのバックアップ

    インターネット上の画像保存するとき、クリックすると表示される 「ピクチャーフォルダー」ですが、ほかに名前を付けているフォルダーはバックアップしないでピクチャーフォルダー(大本のフォルダー)だけをバックアップする場合にはどうすれば良いですか? 今のところ、「PC」を開いて、ピクチャーを丸ごとバックアップしてから、余分なフォルダーを削除しています。 もっと簡単な操作はありませんか? よろしくお願いします。

  • listの格納されている値をGridViewに追加

    下記のようなロジックを動かそうとしていますが、うまくいきません。 「データベースからinteger型の値を取得して、それをreadメソッドでlistに一旦格納し、For Eachで1つずつGridviewに追加していく。」 エラー内容でググっても良くわからなかったので、解決策がわかる方がいましたらご助言お願い致します。。 *DBから値を取得し、listに格納するところは問題なく動いていますが、Gridviewに追加するところでこけます。 エラー箇所:GridView1.Columns.Add(item) エラー内容:「型 'Integer' の値をを 'System.Web.UI.WebControls.DataControlField' に変換できません。」 Dim list As List(Of Integer) = New List(Of Integer) Dim result As Integer = Byte.MinValue Do While testReader.Read() result = Convert.ToInt32(testReader("price")) list.Add(result) Loop For Each item In list GridView1.Columns.Add(item) Next

  • C#を勉強していて、指定したフォルダから画像を読み込んでピクチャボック

    C#を勉強していて、指定したフォルダから画像を読み込んでピクチャボックスに次々と表示するスライドショーを作っています。 それで次のように作りました。 string[] files = System.IO.Directory.GetFiles(@"c:\test\", "*.jpg");  foreach (string file in files)  {   pictureBox1.Image = Bitmap.FromFile(file);   this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; Thread.Sleep(1000);  } しかしこれではフォルダの最後の画像しか表示されません。 この場合次々と画像を表示するにはどうしたらいいか教えてください。

  • App Storeで購入済のアプリを削除してまった

    MacのApp Storeで、「購入済み」の項目を開いたらインストール済みのアプリ一覧が表示されますが、そのうちの一つを誤って×マークをクリックして削除してしまいました。 そのアプリ自体はまだMacに残っています。 また、AppStoreで該当アプリのページを開くと「購入済み」と記されており、ダウンロードできない状態となっています。 再度インストール済みのアプリ一覧に表示させるにはどのようにすれば良いでしょうか。 また、現在の状態のままで問題はないのでしょうか。

    • ベストアンサー
    • Mac
  • iPhoneアプリの開発についてです。

    iPhoneアプリにディレクトリ階層を管理し、テーブルビューに表示する機能を実装中です。 パスの後ろに、"/○○○(ディレクトリ名)"という文字列を足して指定のディレクトリのパスを取得し中のファイルやフォルダの一覧を取得するという手法を用いています。 次のディレクトリに進む分には問題ないのですが、元のフォルダに戻るときに問題が生じてしまいます。 セルをタップすることで元のパスの後ろに選択したフォルダの名前を足していますが、ナビゲーションコントローラーで戻る際にパスの後ろに足されたフォルダ名を取り除かなくてはなりません。 もちろん戻るボタンが押されたことを検知するコードを調べたのですが、 -(void) viewWillDisappear:(BOOL)animated { if ([self.navigationController.viewControllers indexOfObject:self]==NSNotFound) { //ここでパスから文字列を取り除く } [super viewWillDisappear:animated]; } これではルートフォルダ→次のフォルダの間でしか検知されません。僕がやりたいのはルートフォルダ→次のフォルダ→次のフォルダ→・・・とすべてのフォルダ間の戻るボタンの検知をしたいのです。 didSelectRowAtIndexPathメソッドに UITableViewController *nextDir = [[UITableViewController alloc] init]; nextDir.tableView.delegate = self; nextDir.tableVIew.dataSourse = self; と記述することで、ストーリーボードにいくつもコントローラーを置かずにテーブルビューにディレクトリの内容を表示しています。 自前のコントローラー→nextDir間の戻るボタン検知は先ほど乗せたコードで検知できましたが、nextDir→nextDir間の戻るボタン検知はどうすればいいでしょうか? 簡単ですが説明図を作ってみました。わかりにくかったらすみません。

  • WEBアプリでデータを書き込む

    visual web developerを使用してwebアプリケーションを作っています。 住所氏名一覧表に、 あらたに住所氏名を加えていく入力フォームを作成しています。 すべてのデータにIDを自動出来に加えたいのですが 元データをXMLファイルにすると 自動でIDをふる方法がわかりません。 元データをACCESSファイルにすると データの「登録」ボタンを押した際 ”別のプロセスで使用されているため、プロセスはファイル××にアクセスできません。” と出てしまいます。 できれば後者の方法(ACCESS形式)で運用したいのですが のどようにすればいいのでしょうか? 教えてください! 以下は「登録」ボタンのコードです。 Protected Sub Button_Add_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button_Add.Click ' データベースファイルのパスを定義する Dim UpFolder_URL As String = "~/Chap4/Upload_data/" Dim UpFolder As String = Server.MapPath(UpFolder_URL) Dim DBFile As String = UpFolder + "database.mdb" ' データベースのデータを読み込む Dim albumDS As New Data.DataSet() albumDS.ReadXml(DBFile) Dim table As Data.DataTable = albumDS.Tables("item") ' 新しい行をテーブルに追加する Dim newRow As Data.DataRow = Table.NewRow() newRow("Date") = DateTime.Today.ToLongDateString() newRow("Name") = Name.Text newRow("Contents") = Contents.Text newRow("Add") = Add.Text newRow("Method") = Method.Text table.Rows.Add(newRow) ' データをデータベースファイルに書き出す albumDS.WriteXml(DBFile) ' GridViewの表示を更新する GridView1.DataBind() End Sub

  • ASP.Net GridView DataBind

    お世話になります。 FormView の中に いくつかのコントロールと ボタンとGridView を配置しております。 ボタンを押すと、GridView のレコードが追加するような UpDate文を実行するようになっています。 GridViewのデータも一緒に新しいデータとともに表示を更新させたいと思うのですが、 GridView の DataBindメソッドをどうやって呼び出していいかわかりません。 名前は GridView1 なのですが、Button1_Click メソッドの中で、GridView1 の候補が出ないですし、 どうやって定義して、実行すればいいのかわかりません。 何卒よろしくお願い申し上げます。

専門家に質問してみよう