ここから本文です

C#2013でウィンドウズ アプリを開発しています プログレスバーの上に進捗率を表...

str********さん

2014/9/1322:32:08

C#2013でウィンドウズ アプリを開発しています

プログレスバーの上に進捗率を表示させたいのですが、うまくいきません

当方は、まず、ラベルをプログレスバー上に貼り付けたのですが、backcolorがプログレスバーの色にならず、当然FORMの色になってしまいました
これを回避するために、ラベルの親プロパティをプログレスバーにして、backcolorをtransparentにしましたが、ラベルが見えなくなってしまいダメでした

web上で色々調べると以下にやりたいことそのままの情報がありましたが、いかんせんTextBlock、ViewBox、WPFの知識が全くなく内容を理解することが出来ませんでした
http://blog.hiros-dot.net/?page_id=4133

ご指導、お知恵をお借りできればと思います
よろしくお願いいたします

閲覧数:
130
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

2014/9/1410:28:00

参考ページのものを作成したいこという事(つまりWPF開発)前提で話します。

まず、質問者さんが、Windowsフォームアプリでプロジェクトを作成していた場合は、再度プロジェクトを新しく作成し、その時にWPFアプリケーションにして作成しましょう。

同じC#ではありますが、違うものです。

で、WPFの場合はフォームではなく、ウィンドウと言い、フォームでのデザイン画面と同じようなものがWPFでもありますが、WPFではさらに、そのデザインをXMLで表現したXAMLという形式でも表示できます。

プロジェクトを新しく作ったら、おそらくMainWindowというデザイン画面が最初に開かれますが、その画面をタブの”XAML”に切り替えるとXAMLの画面に代わります。
(環境によっては縦割りで半分ずつ、デザインとXAMLが表示されている場合もあります)

おそらく、最初は

<Window ~~~>
<Grid>

</Grid>
</Window>

みたいな感じになっていて、デザイン画面でボタンを配置すると
<Button ~~~>
みたいなタグが追加されます。

で、参考にされたページですが、XAMLの例と書いているものがその一部分が抜粋されたもので、

極端に言えば、上記の
<Grid>
</Grid>
の間にコピペで張り付けると…デザイン画面にプログレスバーが表示されます。
(画面サイズとか余白が意図したものと違う可能性があるのでボタンの位置とかが多少違うかもしれませんが)

ちょいと位置調整するとこんな感じかな?

<Window ~~~ Height="130" Width="300">
<Grid>
<Grid Margin="12,12,0,0" HorizontalAlignment="Left" Width="249" Height="34" VerticalAlignment="Top">
<ProgressBar Name="ProgressBar1"
Minimum="0" Maximum="100" Value="0" />
<Viewbox>
<TextBlock Name="TextBlock1" Text="0%" TextAlignment="Center"/>
</Viewbox>
</Grid>

<Button Content="START" Height="23" HorizontalAlignment="Left" Margin="12,56,0,0"
Name="btnStart" VerticalAlignment="Top" Width="75" />
<Button Content="STOP" Height="23" HorizontalAlignment="Right" Margin="0,56,106,0"
Name="btnStop" VerticalAlignment="Top" Width="75" />
</Grid>
</Window>

で、TextBlock ですが、フォームでいうラベルのようなテキストを表示するコントロールです。(WPFにもラベルはありますので本当はちょっと違う)

Viewboxは、XAMLを見てもらうとわかりますが、TextBlockを子要素として持ってます。
このコントロールは中に入れたものを自動で拡大・縮小してくれる便利なコントロールです。

上記のサンプルですが、Margin(余白)プロパティのみで位置を調整しているだけなので、ウィンドウのサイズなどが変わるとレイアウトが崩れます。

本来は、StackPanelなどのパネルなどを配置してその中に各コントロールを配置したりしますが、その辺はおいおい勉強してくださいね。

以上、話し出したらキリがないので、いったんこの辺で。

何かあれば返信ください。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる