ふらっとC#,C♯,C#(初心者用) Part67
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/16(木) 18:23:33「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっとC#,C♯,C#(初心者用) Part66
http://hibari.2ch.net/test/read.cgi/tech/1290854247/
■関連スレ
C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/
■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。
直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0153デフォルトの名無しさん
2010/12/21(火) 02:19:08.NetのDLLなら参照設定に追加すれば使える。
開発時に手に入らないものであれば、
実行時にロードしてクラスやメソッドを呼ぶ。
0154デフォルトの名無しさん
2010/12/21(火) 02:19:08hoge(int n) で hoge(10+5); って書いたら n=10+5 じゃん。
hoge(Func<int,int> f) で hoge(a=>a*a); って書いたら f=a=>a*a だべさ。
0155デフォルトの名無しさん
2010/12/21(火) 03:48:29本体でインターフェース定義しといて
それを実装したプラグインを作ってもらえばいい
このへんが参考になるんじゃないかな
http://dobon.net/vb/dotnet/programing/plugin.html
0156デフォルトの名無しさん
2010/12/21(火) 05:17:04型推論の結果、自動で適切な型に入れてくれる。
0157デフォルトの名無しさん
2010/12/21(火) 11:22:34WMP.Libを参照設定
フォームを作成し、そのなかにWMPコントロールを配置します
0158デフォルトの名無しさん
2010/12/21(火) 11:41:18なるほど、インターフェースですか
C++のhファイルがインターフェースにあたるのかな?
あるソフトのプラグインsdkを見ても
hファイルが入っているだけなんです
C++はよくわからないですが、コードを見た感じインターフェースっぽいですね
足がかりが出来ました。ありがとう。
0159デフォルトの名無しさん
2010/12/21(火) 11:43:180160デフォルトの名無しさん
2010/12/21(火) 12:47:21プラグイン側も本体の方もアホみたいに簡単
0161デフォルトの名無しさん
2010/12/21(火) 13:06:41C#製のプラグイン対応アプリてないですよね
C++の得意分野なのかなと思っていました
0163デフォルトの名無しさん
2010/12/21(火) 13:51:33VS2010
だいたいC#で書かれててプラグインにはMEF使ってる
0164デフォルトの名無しさん
2010/12/21(火) 18:01:070165デフォルトの名無しさん
2010/12/21(火) 18:50:100166デフォルトの名無しさん
2010/12/21(火) 18:56:140167デフォルトの名無しさん
2010/12/21(火) 20:06:44〜の文字列の長さによってメニューの幅が広がりますが、〜の文字列が短くなってもメニューの幅が
広がったままになってしまい、
│ '〜〜' を検索 (無駄なスペース) │
のように右に無駄なスペースができてしまいます。
このスペースを消したいのですがどうしたらよいでしょうか?
ちなみにオーナードローはしていません。また、他のメニュー項目のTextはこの項目のTextより短いです。
0168デフォルトの名無しさん
2010/12/21(火) 20:14:380169デフォルトの名無しさん
2010/12/21(火) 20:17:15すいません書き忘れました、WinFormsです。
0170デフォルトの名無しさん
2010/12/22(水) 00:34:27最初から自動変換あってもよかったのにね。
途中入りなのが、過去のコード資産が微妙に残念に見える。
0171デフォルトの名無しさん
2010/12/22(水) 01:13:40�AWindowsFormsApplication1とやらに作成したフォームを別のプロジェクトから表示するにはどうしたらいいですか
もーわけわかんねーです
0172デフォルトの名無しさん
2010/12/22(水) 01:38:16�@参照設定ではなく、ツールボックスのアイテムの選択。
COMコンポーネント一番下のWMPコントロールをツールボックスに追加&フォームに貼り付け
再生は、
this.axWindowsMediaPlayer1.URL = @"C:\hoge.wmv";
"axWindowsMediaPlayer1"でググれば使い方はいくらでも出てくる。
�A別のプロジェクトの参照設定から、プロジェクトタブのWindowsFormsApplication1を選択
0173デフォルトの名無しさん
2010/12/22(水) 07:56:14ありがとうございます
�Aはそのとおり設定出来ました(動かないけどなんとなく解りました)
�@訂正
(1)
フォームに対して、動的なコントロールを追加する場合に、WMPコントロールの記述はどのように行えば良いですか?
(2)
>>157
0174デフォルトの名無しさん
2010/12/22(水) 08:17:28Form1.Designer.csにaxWindowsMediaPlayer1を追加するコードが生成されてるから、
好きなタイミングで呼べば動的な〜かと。
0175デフォルトの名無しさん
2010/12/22(水) 11:27:38ブラウザからコピーしてペーストすると、書式もペーストされるため、困ってます。
Paste() のオーバーライドが不可だったため、今はKeyDownでの独自ペースト処理を検討しています。
0176デフォルトの名無しさん
2010/12/22(水) 12:15:20状況としては別個で、次のそれぞれについて、必要なコードが知りたいのです
a.あらかじめ作成したフォームにWMPコントロールをコードから追加
b.フォームをコード上で作成し、コードからWMPコントロールを追加
c.コードから参照設定を行う
d.c.を行いb.を実装する(要手動ビルド)
0177デフォルトの名無しさん
2010/12/22(水) 13:07:07タブ型ブラウザじゃなくて、チェックボックス式ブラウザだ。
くくく、これはすげえ賜物だぞ・・ すげえ、気になるだろ?
でも、教えてやんねえ。
0178デフォルトの名無しさん
2010/12/22(水) 13:09:30普通のTextBoxをmultiLineにするのじゃあかんのけ?
0179デフォルトの名無しさん
2010/12/22(水) 13:12:19そういう意味じゃないと思いますw
それほど昔じゃないけどここか相談すれで似たようなのを見たな・・・
ブラウザが扱うのはhtmlという整形言語、リッチテキストもリッチテキストというフォーマット
この辺を吸収したければドロップ情報をそのままリッチテキストに渡すんじゃなく
書式を加工するとかしないとだめだと思うよ
0180175
2010/12/22(水) 13:40:41TextBox よりも RichTextBox の方が機能が多そうなので、RichTextBoxを使っています。
例えばUndoなどは、RichTextBox の方が良いので。
>>179
PlainTextにするプロパティはなさそうですね。
Ctrl+V を独自実装して回避してみます。
ありがとうございました。
0181デフォルトの名無しさん
2010/12/22(水) 13:48:57VSで参照設定すると、使いやすいようにラッパーが自動生成される。
それを使わずにということになると、COMを触る必要があって結構難しい。
VSで参照設定したときに生成されるDLLの中身をReflectorかなんかで読んでみたらいいと思う。
ずっと簡単な方法としては、WPFのMediaElementをElementHostで利用する手もあるよ。
0182デフォルトの名無しさん
2010/12/22(水) 14:06:53アプリ起動時にwebbrowserを内部的に用意して
D&Dで貰ったhtmlをwebbrowser入れて処理させた後
WebBrowser.Document.Body.InnerText
で貰ってきたらどうだろう?
ヘッダー部分はでてこないが、body以下は確か全部でてきたはず
0183デフォルトの名無しさん
2010/12/22(水) 14:15:46http://ideone.com/Mtynz
0184デフォルトの名無しさん
2010/12/22(水) 14:43:060185デフォルトの名無しさん
2010/12/22(水) 22:24:49EM_SETTEXTMODEでTM_PLAINTEXTを設定するといいかも
http://ideone.com/zXwcT
0186175
2010/12/22(水) 22:54:29ありがとうございます。そのやり方で確認できました。
VBとかはプロパティであった気がしましたが、裏では持ってたんですね。
>>182
ありがとうございます。
今回は単純にリッチをプレーンにしたかっただけなので。。。
0187デフォルトの名無しさん
2010/12/23(木) 00:07:11よかったね
Ctrl+Vは他にコンテキストメニューとか
場合によってはShift+Insertもあったりして面倒
0188デフォルトの名無しさん
2010/12/23(木) 02:16:06お礼はいらないよ
0189デフォルトの名無しさん
2010/12/23(木) 02:33:16どういたしまして
0190デフォルトの名無しさん
2010/12/23(木) 15:31:03いえいえ
0191デフォルトの名無しさん
2010/12/24(金) 14:48:21「現在の位置でテキストの内容を DateTime オブジェクトとして読み取ります」
という説明の"現在の位置で"とはどういう意味ですか?
現在の位置を取得または設定できるプロパティ、メソッドがあるのでしょうか?
またReadContentAsDateTimeメソッドを使って下記の<updated>〜</updated>の中の文字列を
"05時00分00秒"と"01時00分57秒"と置換する方法に適していますか?
<entry>
<title>タイトル1</title>
<name>名前1</name>
<updated>2010-12-22T05:00:00Z</updated>
</entry>
<entry>
<title>タイトル2</title>
<name>名前2</name>
<updated>2010-12-23T01:00:57Z</updated>
</entry>
0192デフォルトの名無しさん
2010/12/24(金) 15:00:36その下の文字列を順に読んで、タグなどが見つかるたびに「なんか見つかった」と通知してくる感じ
そのカーソルの位置が現在の位置。取得しても特に意味はないよ
XmlReaderは扱いが難しいのでLINQ to XMLでも使った方がいいと思う
でもそれ置換するだけなら正規表現でよくないか
XMLとして扱う必要無いような
0193デフォルトの名無しさん
2010/12/24(金) 15:24:06m => "<updated>" + DateTime.Parse(m[1].ToString()).ToString("HH時mm分ss秒") + "</updated>");
合ってるかは知らん
もしDateTime.Parseが使えなかったらParseExactで
0194デフォルトの名無しさん
2010/12/24(金) 15:41:03targetFiles.GroupBy( _ => i++ / 100 )
を見せられたのですが、"_"の意味がわからず頭を抱えております。
やりたいことを考えたら、ラムダ式の結果でグループわけ、
ラムダ式は、アイテムごとにi++して、/100で云々、だとは思うのですが…
よろしくお願いします(´・ω・`)
0195191
2010/12/24(金) 15:46:31なんとなく分かりました
XMLはネットのRSSを
XmlReader reader = XmlReader.Create("http://www.***.com/index.rss");
で取得してそのままdatagridviewに表示してます
XMLであればタグの中身だけ抽出して変換で加工できるかな思いました
stringやStringBuilderに変換し加工しても問題ないのでそっちの方法でやってみます
>>192さん>>193さんありがとうございました
0196デフォルトの名無しさん
2010/12/24(金) 15:51:15意味はないだろ
>>193でいうならm=>でmという名前の引数を宣言する代わりに_という名前の引数を宣言してるだけ
使わないからいかにも無意味そうな名前にしてるんでしょ
0198デフォルトの名無しさん
2010/12/24(金) 20:52:22俺ならそういう時は、 ( dummy => i++ / 100 ) って書くかも。
0199デフォルトの名無しさん
2010/12/24(金) 20:54:08どうしてもLINQ使いたかったらSliceみたいな拡張メソッド作るわ
0200デフォルトの名無しさん
2010/12/24(金) 21:52:53c#で習得した値を元に行いたいのですが、どのような方法がありますか?
c#のコード→javascriptへ値を渡す→値を元にcss(displayプロパティ)を書き換えるjavascriptを実行
というのは可能なんでしょうか?
0201デフォルトの名無しさん
2010/12/24(金) 21:53:130202デフォルトの名無しさん
2010/12/24(金) 23:18:13コードを書いてくれ・・・
0203デフォルトの名無しさん
2010/12/24(金) 23:23:200204デフォルトの名無しさん
2010/12/25(土) 00:06:550205デフォルトの名無しさん
2010/12/25(土) 00:16:25var dev = Math.Sqrt(data.Average(d => Math.Pow(d - ave, 2)));
クエリ式使ってないけどいいよね
0206デフォルトの名無しさん
2010/12/25(土) 02:30:050207デフォルトの名無しさん
2010/12/25(土) 04:42:39たとえばjsに
function showmsg(msg) {
alert(msg);
}
ってのがあったとしたらC#からは
webBrowser1.Document.InvokeScript("showmsg", new object[]{"hello!"});
で呼び出せる。
0208デフォルトの名無しさん
2010/12/25(土) 07:35:370209デフォルトの名無しさん
2010/12/25(土) 09:06:17長い
2文字で頼む
0210デフォルトの名無しさん
2010/12/25(土) 09:09:28ラムダ式で使わない変数を_で置くってのは割と定型句なので、慣れといたほうがいいよ
0211デフォルトの名無しさん
2010/12/25(土) 09:27:27!(a==b)
0212デフォルトの名無しさん
2010/12/25(土) 09:38:590213デフォルトの名無しさん
2010/12/25(土) 11:02:130214デフォルトの名無しさん
2010/12/25(土) 11:27:240215デフォルトの名無しさん
2010/12/25(土) 11:30:38わかりやすく <- とかどうだろうか
不等号&マイナスと区別が付かないとかそんなことは知らない
0216デフォルトの名無しさん
2010/12/25(土) 11:36:100217デフォルトの名無しさん
2010/12/25(土) 11:38:01その辺は使ってるしなあ・・・
0218デフォルトの名無しさん
2010/12/25(土) 11:42:150219デフォルトの名無しさん
2010/12/25(土) 11:53:28等号を =、代入の方がを他のに変えるためには
まず代入の少ない言語設計が必要。
0220デフォルトの名無しさん
2010/12/25(土) 12:30:02PASCAL流に:=がいいんじゃね
>>219
代入を少なくしてもなくすことはできない
0221デフォルトの名無しさん
2010/12/25(土) 12:31:410222デフォルトの名無しさん
2010/12/25(土) 12:39:210223デフォルトの名無しさん
2010/12/25(土) 12:47:17うわ、いやだ
0224デフォルトの名無しさん
2010/12/25(土) 13:35:10�@
button1.DataBindings.Add(new Binding("Enabled",checkBox1,"Checked"));
このコードは一見うまい事連動できているように見えますが、
デザイナ上のDataBindingsプロパティからは指定できません。
なんでですか?やっちゃいけないのでしょうか?
�A
button1.DataBindings.Add(new Binding("Text", this.dataSet11, "DataTable1.Col1", true));
こっちはデザイナ上で指定可能ですが、
常に1レコード目がバインドされ無意味に思えます。
DataTableにPositionプロパティのようなものがあり、制御可能なのでしょうか?
それともBindingSource前提という事ですか?
0225デフォルトの名無しさん
2010/12/25(土) 14:37:521)
バインディングはデータとビューを分けましょうってのが根底にあるからじゃね
2)
うん、BindingSource前提
どうしても使いたくないってのならCurrencyManagerもあるけどめんどくさいだけ
0226デフォルトの名無しさん
2010/12/25(土) 14:59:27試してみます
ありがとうございました
0227デフォルトの名無しさん
2010/12/25(土) 15:58:28>1)
なるほど、�@はビュー制御だから違うでしょ!って事ですか。
でもChangedイベントでの同期って初期処理で一度呼んでやらんといけないのが微妙。
(もはや書き慣れてしまいましたが)
>2)
CurrencyManager調べてみます。
>BindingSource前提
INotifyPropertyChangedを実装したクラスなども目的から外れてはいないですよね?
デザイナ上で指定できないだけで。
0228デフォルトの名無しさん
2010/12/25(土) 16:01:45FormのPaintイベント発生時にDrawpath&FillPathでForm上に縁取り文字を描画して
描画した縁取り文字の形でフォームをくり抜きたいんですが「e.Graphics」に描画されてる縁取り文字のパスのとり方がよくわかりません
ご存知の方はどうかこの卑しい豚に助言というエサをお与えください。
【現状のそーす】
ttp://ideone.com/EqxNJ
これだとAddString時点のパスでくりぬかれるので、
FillPath後のパスでくりぬくようにしないといけないっぽいけれど
やり方が全然わからない(´・ω・`)ボスケテ
0229デフォルトの名無しさん
2010/12/25(土) 16:34:32塗ってから縁取りすりゃいいんじゃね?
//内側を塗る
Brush fillBrush = new SolidBrush(Color.White);
e.Graphics.FillPath(fillBrush, gp);
//縁を描画
Pen drawPen = new Pen(Color.Blue, 4);
e.Graphics.DrawPath(drawPen, gp);
0230デフォルトの名無しさん
2010/12/25(土) 17:17:04http://ideone.com/LHFfy
0231デフォルトの名無しさん
2010/12/25(土) 18:03:49グアアア、こんなことだったのか
ありがとう、できたよ(´;ω;`)
0232デフォルトの名無しさん
2010/12/25(土) 18:59:150233デフォルトの名無しさん
2010/12/25(土) 19:41:550234デフォルトの名無しさん
2010/12/25(土) 20:12:45画面に画像貼り付けると他の部品とサイズがずれるのは時代遅れだと思うんだ。
0235デフォルトの名無しさん
2010/12/25(土) 20:16:420236デフォルトの名無しさん
2010/12/25(土) 20:19:32プログラムからPictureBoxのサイズ変更してたりすると死ぬ。
0237デフォルトの名無しさん
2010/12/25(土) 20:49:590238デフォルトの名無しさん
2010/12/25(土) 21:25:59中途半端なDPI仮想化のせいでデザイン時に設定したサイズ(ピクセル)と実行時に
取得したサイズ(ピクセル)が一致しなかったりする。
いろんな画面部品のデフォルトサイズが小さくて詳細ディスプレイだと見づらくなることがある。
WinFomクラスも頑張っているけど、ときどき落とし穴があるんだよなあ。
WPFだとデザイン時も実行時も一貫してDPIが仮想化されているから気にする必要がない。
0239デフォルトの名無しさん
2010/12/25(土) 21:33:350240238
2010/12/25(土) 21:42:58俺は結構気になるな。
http://msdn.microsoft.com/ja-jp/windows/dd630126
ここで例として貼り付けられている表示の崩れの幾つかはWinFormsでも起こるんだけど、
こういうのでイラっとしたことない?
WPFならこれらの問題とおさらばできます(←怪しい商法のようなセリフだ)
0241デフォルトの名無しさん
2010/12/25(土) 21:44:45まずはXPで字がにじむのをどうにかしてほしい
0242デフォルトの名無しさん
2010/12/25(土) 21:47:320243デフォルトの名無しさん
2010/12/25(土) 21:48:150244デフォルトの名無しさん
2010/12/25(土) 21:48:59WinForm完全互換のWPFが出たら流行るだろう
0245デフォルトの名無しさん
2010/12/25(土) 21:49:56もう直ってるよ
0246デフォルトの名無しさん
2010/12/25(土) 22:16:000247デフォルトの名無しさん
2010/12/25(土) 22:19:340248デフォルトの名無しさん
2010/12/25(土) 22:19:38MFCとWinFormsアプリ以外は問題ないと思っていたが、ブラウザの
拡大表示使ってたらSilverlightのサイズ計算もおかしくなるので困っている。
IEのDPI対応を何とかしてくれ。
0249デフォルトの名無しさん
2010/12/25(土) 22:24:110250デフォルトの名無しさん
2010/12/25(土) 22:30:51文化オリエントの臭いがついているところ。
0251デフォルトの名無しさん
2010/12/25(土) 22:50:3096DPIじゃない環境が一般的な時代になったんだし、
崩れて読めなくなったりしない程度には対応を進めるべきだとは思うけどね。
0252デフォルトの名無しさん
2010/12/25(土) 22:55:52それはForm.PerformLayoutによるニセ仮想化じゃなくてVistaの仮想化だよね?
WinFormのニセ仮想化をオフにする必要があるけど、どうやるの?
■ このスレッドは過去ログ倉庫に格納されています