ふらっとC#,C♯,C#(初心者用) Part55
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/02/04(木) 22:02:43「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
ふらっとC#,C♯,C#(初心者用) Part54
http://pc12.2ch.net/test/read.cgi/tech/1264236247/
関連スレ
C#, C♯, C#相談室 Part55(実質56)
http://pc12.2ch.net/test/read.cgi/tech/1260111240/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
0002デフォルトの名無しさん
2010/02/04(木) 22:08:52A4 - ISO 216 用紙サイズ(210mm×297mm)
これと
[PaperSize A4 Kind=A4 Height=1169 Width=827]
これの関係は
1169/100*2.54=29.6926cm
ということなので
{X=13.33333,Y=11.66667,Width=800,Height=1137.667}
これのX=13.33333も
13.33333/100*2.54=0.338666582cm
まあ5mmじゃなく3mm程度ずれてる計算?
プリンターが古かったりすると多少ずれるかもしれないし
0003デフォルトの名無しさん
2010/02/04(木) 22:26:18ありがとうございました。
久しぶりにスレ立てしたらこのざま・・・
>>2
ありがとうございます。
全ての謎がとけました。^^
0004デフォルトの名無しさん
2010/02/05(金) 00:10:40ってどういうときに設定するの?msdn読んでも分かりません。
0005デフォルトの名無しさん
2010/02/05(金) 00:17:21のでまあ気にする必要なし
基底のControlが持ってるのを引き継いでるだけ
0006デフォルトの名無しさん
2010/02/05(金) 00:34:52Directory(Info).GetDirectories だとエントリが多いと時間がかかるので、なるべくO(1)に近いものがいいんですが
0007デフォルトの名無しさん
2010/02/05(金) 00:46:400008デフォルトの名無しさん
2010/02/05(金) 00:47:40Win32APIのFindFirstFile/FindNextFileとか
0009デフォルトの名無しさん
2010/02/05(金) 00:49:540010デフォルトの名無しさん
2010/02/05(金) 00:56:26レスありがとうございます
FindFirstFileEx も少し試してみたんですが、ディレクトリのみ取得するオプションは未実装でした。
結局ディレクトリとファイルを同時に列挙することになるので、ファイルのみが大量にある
ディレクトリだと逆に遅くなりそうな気もしますが、もう少し調べてみます。
0011デフォルトの名無しさん
2010/02/05(金) 01:00:24ただ調べるだけなの?
0012デフォルトの名無しさん
2010/02/05(金) 01:02:28GetFilesもGetDirectoriesも内部じゃFindFirstFile使ってるんだから
まあ実装の上手い下手の差は出るかもだが
0013デフォルトの名無しさん
2010/02/05(金) 01:03:440014デフォルトの名無しさん
2010/02/05(金) 01:04:520015デフォルトの名無しさん
2010/02/05(金) 01:07:250016デフォルトの名無しさん
2010/02/05(金) 01:11:43チューリング賞取れるよ
0017デフォルトの名無しさん
2010/02/05(金) 01:14:390018デフォルトの名無しさん
2010/02/05(金) 01:18:56ディレクトリとファイルはファイルシステム上のオブジェクトとしては区別されてない
ディレクトリは”ディレクトリ属性を持っていて下層ディレクトリへのリンクをデータに持ってるファイル”だから
どちらかだけを列挙っていうのはできない
0019デフォルトの名無しさん
2010/02/05(金) 01:48:00ディレクトリがファイル/ディレクトリを含むかどうかのフラグを持つファイルシステムを作ればO(1)
0020デフォルトの名無しさん
2010/02/05(金) 10:17:09いつも書いていませんが、なんとかなっていますは。
string program = @"C:\Program Files\Internet Explorer\IEXPLORE.EXE";
0021デフォルトの名無しさん
2010/02/05(金) 10:19:430022デフォルトの名無しさん
2010/02/05(金) 10:25:35お前Cもやったことないのか?
初心者は帰れ
0023デフォルトの名無しさん
2010/02/05(金) 10:32:51文字列をあらわす ""の中の文字の扱いが若干変わるのが@の有無なんですよね
verbatim文字列(ページの最後の方)
http://www.atmarkit.co.jp/fdotnet/csharptips/010string/010string.html
0024デフォルトの名無しさん
2010/02/05(金) 10:33:31002520
2010/02/05(金) 10:37:20確かに\\を2つ書いてませんね。
ちなみに初心者ではありませんよ。
Windows2.0の時代からSDKつかって苦労してプログラム作っていますからね。
いや、でもC#は1月目の初心者です。
生意気言ってゴメンナサイ( ・ω・)y─┛〜〜
0026デフォルトの名無しさん
2010/02/05(金) 10:37:43古い記事だから仕方ないか
002723
2010/02/05(金) 10:38:55>いや、でもC#は1月目の初心者です。
>生意気言ってゴメンナサイ( ・ω・)y─┛〜〜
一言多いw
顔見えないので若い初心者です〜ぽく振舞っておけばいいのに
0028デフォルトの名無しさん
2010/02/05(金) 10:40:360029デフォルトの名無しさん
2010/02/05(金) 10:42:22"をそのまま使えるように@"〜"@とかクォーテーションを変えてほしかった
0031デフォルトの名無しさん
2010/02/05(金) 11:10:05ピクチャーボックスに連動して表示されるように
private void textbox1_TextChanged(object sender, EventArgs e)
{
//PictureBox1のGraphicsオブジェクトを取得
Graphics g = picturebox1.CreateGraphics();
//フォントオブジェクトの作成
Font fnt = new Font("MS UI Gothic", textbox1.Font.Size);
//文字列を位置(0,0)、青色で表示
System.Windows.Forms.TextRenderer.DrawText(g, textbox1.Text.Trim(), fnt, new Point(0, 0), textbox1.ForeColor);
//リソースを開放する
fnt.Dispose();
g.Dispose();
}
とサイトを参考に作ってみたのですが、このままではテキストボックス
の文字を消した時が上手く反映させることができませんでした。
書き込む直前に.imageをnullでクリアすることで、その都度テキストを
新規に書き込めるかと考えたのですが、この方法だとピクチャーボッ
クスが最後空白になってしまいました。
他にも何か方法はあるのでしょうか?
0032デフォルトの名無しさん
2010/02/05(金) 11:23:22そのロジック呼び出すとか?
もっと負荷の少なそうなのありそうだけど思いつかん
0033デフォルトの名無しさん
2010/02/05(金) 11:27:49そうでなければ塗りつぶせばいいはず。
g.Clear(pictureBox1.BackColor);
0034デフォルトの名無しさん
2010/02/05(金) 11:36:11TextChangedではInvalidateするだけにする
0035デフォルトの名無しさん
2010/02/05(金) 11:44:31レスありがとうございました。
>g.Clear(pictureBox1.BackColor);
こちらの方法で上手く動作させることができました。
>picturebox1は背景にイメージを使ってるの?
ピクチャーボックスに文字を入れるにはどうするかを調べて、サイト
を参考にしてたため、背景をどうするか等を考えていませんでした。
0036デフォルトの名無しさん
2010/02/05(金) 11:44:53{
//PictureBox1のGraphicsオブジェクトを取得
Graphics g = picturebox1.CreateGraphics();
//バックカラーで塗りつぶすImageがあった場合は考慮してない
SolidBrush b = new SolidBrush(pictureBox1.BackColor);
g.FillRectangle(b, pictureBox1.ClientRectangle);
//フォントオブジェクトの作成
Font fnt = new Font("MS UI Gothic", textbox1.Font.Size);
//文字列を位置(0,0)、青色で表示
System.Windows.Forms.TextRenderer.DrawText(g, textbox1.Text.Trim(), fnt, new Point(0, 0), textbox1.ForeColor);
//リソースを開放する
fnt.Dispose();
g.Dispose();
}
0037デフォルトの名無しさん
2010/02/05(金) 11:45:070038デフォルトの名無しさん
2010/02/05(金) 11:50:180039デフォルトの名無しさん
2010/02/05(金) 11:52:12おかしいなあぼーんされない
0040デフォルトの名無しさん
2010/02/05(金) 11:53:38VC#2008EEだとtextBox1なんだが
0041デフォルトの名無しさん
2010/02/05(金) 12:00:04もしかしてAeroだと消えないのかな?
0042デフォルトの名無しさん
2010/02/05(金) 12:20:13Paintイベントに描画処理書いて、textBox1_TextChangedで再描画させればおk
0043デフォルトの名無しさん
2010/02/05(金) 12:25:330044デフォルトの名無しさん
2010/02/05(金) 14:12:23メニューをクリックした時にToolStripMenuItemのインスタンスを覚えさせておけば再現できることがわかりましたが、どうやって保存したらよいのかわかりません。
0045デフォルトの名無しさん
2010/02/05(金) 14:19:26XMLでもいいし昔ながらのiniファイルに書き出した文字列でもいいし
そういう形で保存しておいて、起動の際にそれを読み直してコントロールの設定を行う
0046デフォルトの名無しさん
2010/02/05(金) 14:26:26「XML 直列化 」でググれ
インスタンスの値をまるごとXMLで読み書きできるのがある。
0047デフォルトの名無しさん
2010/02/05(金) 14:30:12シリアライズそのものは簡単なんだけど既存のコントロールってこれにかけられないよね?
http://dobon.net/vb/dotnet/file/xmlserializer.html
0048デフォルトの名無しさん
2010/02/05(金) 14:35:41できなければ必要なプロパティだけをクラス化して、
それを読み書きすればいいと思う。
0049デフォルトの名無しさん
2010/02/05(金) 15:32:320050デフォルトの名無しさん
2010/02/05(金) 15:43:530051デフォルトの名無しさん
2010/02/05(金) 15:47:06法はあるでしょうか?
.backcolor=Color.Transparentとすればピクチャーボックス等は透過
にできるのですが、ControlStyles.SupportsTransparentBackColorス
タイルを適用しなくてはならないとありました。
テキストボックスではTransparentをサポートしていないとエラーが出
たので適用していないとわかったのですが、適用する方法がわからず
にいます。
0052デフォルトの名無しさん
2010/02/05(金) 15:47:510053デフォルトの名無しさん
2010/02/05(金) 15:50:130054デフォルトの名無しさん
2010/02/05(金) 15:52:050055デフォルトの名無しさん
2010/02/05(金) 15:55:200056デフォルトの名無しさん
2010/02/05(金) 16:15:37.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
となっていないので、そのエラーが出たのかと思ってしまいました。
もともとダメという事だったんですね。
>>33さんに教えていただいた方法でテキストの文字列をピクチャーに
きれいに反映させる方法ができたのですが、それを>>51の方法で透過
にしたんです。
しかし子のピクチャーボックスを動かすと黒く塗りつぶされてしまう
という現象が起きました。
g.Clear(pictureBox1.BackColor);
の部分にColor.Transparentを入れたかったのですが、.Clearは色しか
受け付けてくれなくて悩んでいたんです。
そこでピクチャーではなくテキストを使えば解決できるかと思ったの
ですが
0057デフォルトの名無しさん
2010/02/05(金) 16:31:10ここの方法でバックカラーにアルファ付きを使えたんだが(たぶん大丈夫)
でもそのさらに後ろに何か居てそいつが描画してるのでうまくいかなかった
0058デフォルトの名無しさん
2010/02/05(金) 16:45:27その画像はImageプロパティに設定させているの?
BackGroundImageプロパティに設定している場合
BackGroundImageLayoutは何に設定しているの?
0059デフォルトの名無しさん
2010/02/05(金) 16:48:31その画像はImageプロパティに設定させているの?
BackGroundImageプロパティに設定している場合
BackGroundImageLayoutは何に設定しているの?
0060デフォルトの名無しさん
2010/02/05(金) 16:57:08ありがとうございます。読んでみます。
>>58
ArrayList files = new ArrayList();
と変数を宣言しておいて、ここに画像ファイルのパスが入るように
なっています。
これを
親ピクチャー.Image = Image.FromFile(files[0].ToString());
のようにして親に移しています。
0061デフォルトの名無しさん
2010/02/05(金) 17:04:25やだやだやだ〜
0062デフォルトの名無しさん
2010/02/05(金) 17:18:250063デフォルトの名無しさん
2010/02/05(金) 17:23:45xmltext
<result>
<words>
<word>クワガタ</word>
<word>オオクワガタ</word>
<word>メダロット</word>
<word>ミヤマクワガタ</word>
<word>ヒラタクワガタ</word>
<word>ノコギリクワガタ</word>
<word>パラワン島</word>
<word>ルイスツノヒョウタンクワガタ</word>
</words>
</result>
で
0064デフォルトの名無しさん
2010/02/05(金) 17:25:10<?xml version="1.0" encoding="UTF-8" ?>
XDocument xdoc = XDocument.Parse(xmltext);
var query = from result in xdoc.Root.Elements()
select result.Element("word").Value;
foreach (var q in query) {
lists.Add(q);
}
とすると、
クワガタ
オオクワガタ
メダロット
ミヤマクワガタ
ヒラタクワガタ
ノコギリクワガタ
パラワン島
ルイスツノヒョウタンクワガタ
をlistsに入れられると思ったのですが、クワガタしかはいりません。
どこがまずいでしょう?
ご指摘お願いします。
0065デフォルトの名無しさん
2010/02/05(金) 17:39:08> select result.Element("word").Value;
xdoc.Rootがresult要素でそのElementsはwords要素
words要素を列挙してその中のword要素を取り出すんだからクワガタだけだろ
word要素を列挙してないんだから
0066デフォルトの名無しさん
2010/02/05(金) 17:39:54lists.add(q.value);
}
0067デフォルトの名無しさん
2010/02/05(金) 17:41:580068デフォルトの名無しさん
2010/02/05(金) 17:51:12書き込むときってどうやるの?
0069デフォルトの名無しさん
2010/02/05(金) 17:55:11てか、スレチだからここで聞くな
0070デフォルトの名無しさん
2010/02/05(金) 17:55:190071デフォルトの名無しさん
2010/02/05(金) 18:21:50画像を親ピクチャーのImageではなくBackGroundImageに設定する。親ピクチャーボックスをparentPBとすると
別解その2
Point mPos = Point.Empty;
Rectangle vtb = new Rectangle(0, 0, 100, 20); // 仮想テキストボックス
private void parentPB_MouseDown(object sender, MouseEventArgs e)
{
if (!vtb.Contains(e.Location)) return;
mPos = e.Location;
mPos.Offset(-vtb.Location.X, -vtb.Location.Y);
Point p = this.PointToScreen(parentPB.Location);
p.Offset(e.Location.X - vtb.Location.X, e.Location.Y - vtb.Location.Y);
Cursor.Clip = new Rectangle(p, new Size(parentPB.Width - vtb.Width, parentPB.Height - vtb.Height));
}
private void parentPB_MouseMove(object sender, MouseEventArgs e)
{
if (mPos == Point.Empty) return;
vtb.X = e.X - mPos.X;
vtb.Y = e.Y - mPos.Y;
parentPB.Invalidate();
}
private void parentPB_MouseUp(object sender, MouseEventArgs e)
{
Cursor.Clip = Rectangle.Empty;
mPos = Point.Empty;
}
private void parentPB_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.Yellow, Rectangle.Round(vtb));
e.Graphics.DrawString(textBox1.Text, textBox1.Font, new SolidBrush(textBox1.ForeColor), vtb.Location);
}
0072デフォルトの名無しさん
2010/02/05(金) 18:23:07中級スレあったっけ?
0073デフォルトの名無しさん
2010/02/05(金) 18:24:22http://cc3.org/p2Writer/
こういうものがあってだな
Windows + .Net Framework 2.0
ということらしいんだわ
ソースの配布はされてないけどな・・・・そういうことや
007471
2010/02/05(金) 18:27:05e.Graphics.DrawRectangle(Pens.Yellow, Rectangle.Round(vtb));
↓
e.Graphics.DrawRectangle(Pens.Yellow, vtb);
0075デフォルトの名無しさん
2010/02/05(金) 19:14:51Imageを配置してサムネイル画像を表示しました。
その画像をダブルクリック(あるいはクリック)したら、実画像を開きたいと思います。
Process.Start("Paint", filename);
ダブルクリックのイベントハンドラって、どう書けばよいですか?
Imageのプロパティを見ても、MouseDown,Enter,Leave,Left(Right)ButtonDown,LeftButtonUp,Move,Up,Wheelがあるだけで、クリックのイベントが見当たりません。
ご教示ください。
0076デフォルトの名無しさん
2010/02/05(金) 19:18:130077デフォルトの名無しさん
2010/02/05(金) 19:23:43早速ありがとうございます。
列挙するにはどうしたらよいですか?
foreach (var q in query) {
lists.Add(q);
}
で列挙できたと思っていたのです。
>>67
xdoc.Root.Elements()には、デバッグモードで見ると、
xmltextがそのまま入ってるので、それだと思ってました。
>>66
早速入れてみましたが、エラーになってしまいました。
foreach (var q in xdoc.selectNodes("/result/words/word")) {
'System.Xml.Linq.XDocument' に 'selectNodes' の定義が含まれておらず、型 'System.Xml.Linq.XDocument' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
0078デフォルトの名無しさん
2010/02/05(金) 19:24:49自由に変形させることはできませんか?
0079デフォルトの名無しさん
2010/02/05(金) 19:26:00こちらへ
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
0080デフォルトの名無しさん
2010/02/05(金) 19:29:45> 列挙するにはどうしたらよいですか?
from a in b
が
foreach (var a in b)
と同じ意味
だから
from result in xdoc.Root.Elements()
は
foreach (var result in xdoc.Root.Elements())
と同じで、さて何回ループ回る?
0081デフォルトの名無しさん
2010/02/05(金) 19:42:120082デフォルトの名無しさん
2010/02/05(金) 20:02:13<ContentControl MouseDoubleClick="ContentControl_MouseDoubleClick">
<Image Source="mikumiku.jpg"/>
</ContentControl>
0083デフォルトの名無しさん
2010/02/05(金) 20:36:15xdoc.Root.Elements()には、デバッグモードで見ると、
xmltextがそのまま入ってます。
ということは1回ですか?
これをタグ別にわけるには、どのようにしたら?
0084デフォルトの名無しさん
2010/02/05(金) 20:41:52>>79
WPFの掲示板は初心者の質問を受けつけてくれないのです。
それでこちらで質問しました。
>>82
xamlのimageに入れて試してみました。
'ContentControl_MouseDoubleClick' の定義が含まれていません、
というエラーとなったのですが、
なにか前もってすることがありますか?
よろしくお願いします。
0085デフォルトの名無しさん
2010/02/05(金) 20:48:42文字通りイベント用の関数を作ってないんだろ。
その部分は消して、プロパティウインドウからイベントを選びなおす。
0086デフォルトの名無しさん
2010/02/05(金) 20:50:27まずLINQじゃなくてforeachで普通に表現してみ
0087デフォルトの名無しさん
2010/02/05(金) 21:03:40foreachでxmlをどうわけたら?
string[] lines = xmltext.Replace("<word>","").Replace("</word>","").Split('\n');
とかですか?
それならできます。
foreach (string line in lines) {
lists.Add(line);
}
0088デフォルトの名無しさん
2010/02/05(金) 21:08:26foreach (var element in xdoc.Root.Elements()) {
// この中のコードを書いてみろってこと
}
0089デフォルトの名無しさん
2010/02/05(金) 22:14:30XML ファイルの該当箇所を 16 進数表記で出力するコトって出来ますか?
0090デフォルトの名無しさん
2010/02/05(金) 22:30:140091デフォルトの名無しさん
2010/02/05(金) 22:48:01xdoc.Root.Elementsをわける方法がわからないですが、
次のとおりで、項目ごとには分けられます。
string[] lines = element.Replace("<word>","").Replace("</word","").Replace(" ","").Split('>');
foreach (string line in lines) {
lists.Add(line);
}
0092デフォルトの名無しさん
2010/02/05(金) 22:49:500093デフォルトの名無しさん
2010/02/05(金) 22:59:09横着しないでやれ
0094デフォルトの名無しさん
2010/02/05(金) 23:01:020095デフォルトの名無しさん
2010/02/05(金) 23:08:250096デフォルトの名無しさん
2010/02/05(金) 23:09:070097デフォルトの名無しさん
2010/02/05(金) 23:11:010098デフォルトの名無しさん
2010/02/05(金) 23:12:45ありがとうございます。
まず、xamlでContentControl MouseDoubleClickをコメントアウトしました。
Imageのプロパティを見ましたが、ContentControlの項目は見つかりません。
なんのイベントを選べばよいですか?
0099デフォルトの名無しさん
2010/02/05(金) 23:17:170100デフォルトの名無しさん
2010/02/05(金) 23:20:010101デフォルトの名無しさん
2010/02/05(金) 23:22:55ねぇよ
嘘つきばっかだな
■ このスレッドは過去ログ倉庫に格納されています