ふらっとC#,C♯,C#(初心者用) Part21
■ このスレッドは過去ログ倉庫に格納されています
0001ななしぃ#
2007/11/18(日) 15:53:41「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part20
http://pc11.2ch.net/test/read.cgi/tech/1191036844/
0191デフォルトの名無しさん
2007/11/28(水) 01:57:090192デフォルトの名無しさん
2007/11/28(水) 02:00:450194デフォルトの名無しさん
2007/11/28(水) 05:15:03f2.ShowDialog();
Form2で
if(DialogResult.OK == FontDialog.ShowDialog()){...}
で帰ってきたDialogResultがForm2に送られてForm2も閉じる
0195デフォルトの名無しさん
2007/11/28(水) 05:15:34何故じゃー
0196デフォルトの名無しさん
2007/11/28(水) 05:42:220197デフォルトの名無しさん
2007/11/28(水) 09:24:31プロパティとかで簡単に黄色とか赤に変更できたりしないのでしょうか?
カスタムコントロールから作らないと駄目ですか?
0198デフォルトの名無しさん
2007/11/28(水) 13:20:440199デフォルトの名無しさん
2007/11/28(水) 14:40:140200デフォルトの名無しさん
2007/11/28(水) 15:08:340201デフォルトの名無しさん
2007/11/28(水) 15:26:02なんかグラデーション動いてるし角が丸っこいし
似せなくてもいいならいいけど
0202デフォルトの名無しさん
2007/11/28(水) 15:37:29グラデーションやクリッピングなんてそんな難しくないだろ?
0203デフォルトの名無しさん
2007/11/28(水) 15:42:030204デフォルトの名無しさん
2007/11/28(水) 15:42:07つーかこれ、貼り付けてるときからてかりが動いてるなw
0205デフォルトの名無しさん
2007/11/28(水) 16:15:130206デフォルトの名無しさん
2007/11/28(水) 17:39:51Theme APIで描かせればそういう風になるんじゃないの?
やったことなくて憶測だけど。
0207デフォルトの名無しさん
2007/11/28(水) 20:48:320208デフォルトの名無しさん
2007/11/28(水) 20:51:17つまり現在のビジュアルスタイルの色と形で描画されるんでしょ
質問者はその色を変えたいと。単純に色変えたいなら自前描画、
ただビジュアルスタイル風でかつ色を変えるのは不可能っしょ
0209デフォルトの名無しさん
2007/11/28(水) 20:53:18変数を直接外部からは(内部でも?)触らないようにしてプロパティでラップ
setterでイベントを起こせばそれらしくなるんじゃ
0210デフォルトの名無しさん
2007/11/28(水) 21:16:030211デフォルトの名無しさん
2007/11/28(水) 21:28:46if (this.hoge != value) {
this.hoge = value;
this.OnHogeChanged(EventArgs.Empty);
}
}
ただこれだけのこと
○○Changedはこんな感じで実装するのが普通
0212デフォルトの名無しさん
2007/11/28(水) 21:40:23いい加減つりはやめろ。
その前に見た瞬間に動かないとわかるコードを貼るのはやめろ。
0213デフォルトの名無しさん
2007/11/28(水) 22:01:02PropertyChangedをつかおう
0214デフォルトの名無しさん
2007/11/29(木) 00:10:48ToolStripMenuItemを実行したときの引数として構造体を使ってしまった。
今クラスにしとけばよかったと激しく後悔してるんですが、
構造体って相互運用以外で使い道ってあるんですか?
0215デフォルトの名無しさん
2007/11/29(木) 00:17:25冗談だスマン
0216デフォルトの名無しさん
2007/11/29(木) 00:25:160217デフォルトの名無しさん
2007/11/29(木) 01:40:180218207
2007/11/29(木) 07:12:180219デフォルトの名無しさん
2007/11/29(木) 11:43:35以下の感じになると思うのですが、途中の行から最後まで読みたい場合には、
どうしたら良いのでしょうか?
srを途中まで進めてからwhileループに入れば良いような気がしますが、
StreamReaderを任意の希望の位置まで進めるメソッドってあるのでしょうか?
StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("UTF-8"));
string line;
while ((line = sr.ReadLine()) != null) {
0220デフォルトの名無しさん
2007/11/29(木) 11:51:07[n行目以降]ならStreamReaderで読み捨て
0221デフォルトの名無しさん
2007/11/29(木) 11:54:56どうも勉強になりました。有難うございます。
あまり速度に影響しないようなので、この場合、読み捨てにします。
0222デフォルトの名無しさん
2007/11/29(木) 17:58:35自動的に32ビット形式になってしまい困っています。
以下のプログラムのどこをどうしたら良いのでしょうか?
よろしくお願いします。
// 24ビットBMP形式のファイルを読み込む
Bitmap bmp = new Bitmap(@"before.bmp");
// 保存するとなぜか32ビットになっている
bmp.Save(@"after.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
0223デフォルトの名無しさん
2007/11/29(木) 18:09:480224デフォルトの名無しさん
2007/11/29(木) 18:23:223引数のSave、今はじめて知ったので調べてみました。
今ヘルプ見てるんですが、ImageCodecInfoとEncoderParametersに
何を設定するのか全然書いてないのよ;;
具体的にどのような値を記述するのか分からないです;;
0225デフォルトの名無しさん
2007/11/29(木) 18:46:33これってjpegで保存するときの圧縮率などの質を指定して
saveするパラメータだということがわかりました。
bmp形式には使えないので、引き続き24ビットBMP形式で
保存する方法をご存知の方、よろしくお願いします。
0226デフォルトの名無しさん
2007/11/29(木) 20:24:38Bitmapオブジェクトを24bitRGBで作ってからSaveで24bitにならんかな?
0227デフォルトの名無しさん
2007/11/29(木) 22:11:06関数のアンマネージシグネチャがvoid UnmanagedFunction(STRUCT*)、
P/Invokeのシグネチャがvoid UnmanagedFunction(IntPtr)
だとして、
スタックに置かれた構造体に対して
STRUCT st;
UnmanagedFunction(new IntPtr(&st));
という風にポインタを直接渡すことは安全ですよね?
0228デフォルトの名無しさん
2007/11/29(木) 22:16:430229227
2007/11/29(木) 22:23:34言葉足らずだったかも。
ここでいう直接っていうのは、HGlobalなどのアンマネージな領域に再確保することなく
マネージスタック上のアドレスを直接アンマネージ関数に渡す、という意味です。
0230デフォルトの名無しさん
2007/11/29(木) 22:24:100232デフォルトの名無しさん
2007/11/29(木) 22:55:52できますた。ありがとう
0233デフォルトの名無しさん
2007/11/29(木) 23:31:36あっちが非同期な関数だと死ぬるよ?
普通にref STRUCTでマーシャラにおまかせしないのかい?
0235デフォルトの名無しさん
2007/11/29(木) 23:59:510237デフォルトの名無しさん
2007/11/30(金) 09:14:18List<string> list;
//listに要素を入れる
list.Exists( delegate( string value ) { return list.IndexOf( value ) >= 0; } )
のように、IndexOfで引っかかるかどうかという判定にしているのですが、
意図した動作をしません。
おそらくみんなこう書くという、典型的な実装があるのではと思っているのですが、
ちょっと教えていただけませんでしょうか。
0238デフォルトの名無しさん
2007/11/30(金) 09:21:44Existsは例えばList<string>内に「**で始まる文字列が存在するか」調べるとかそんなんだが。
ていうか実装?
0239デフォルトの名無しさん
2007/11/30(金) 11:08:540240デフォルトの名無しさん
2007/11/30(金) 11:20:45bool b = aaa.Exists(new System.Predicate<string>(function1));
こんな感じでいいみたいだぞ
0241デフォルトの名無しさん
2007/11/30(金) 11:57:36なかなか哲学的だ。
0242デフォルトの名無しさん
2007/11/30(金) 12:15:45デリゲートの暗黙のインスタンス使ったほうが
コンパイラが良きにはからってくれて効率良かったりする
0243デフォルトの名無しさん
2007/11/30(金) 12:59:59え、例えばどんなとき?
暗黙だろうが明示だろうが生成される型は同じだから変わらない気がするけど。
もしかして匿名デリゲートのことを言ってるのかな?
それにしてもどういう風に最適化しうるのか気になる。
0244デフォルトの名無しさん
2007/11/30(金) 13:04:37効率ってのは実行効率?コーディングの効率?
0245デフォルトの名無しさん
2007/11/30(金) 13:19:170246デフォルトの名無しさん
2007/11/30(金) 13:42:12ソースを大きく括って見やすくするためと思っていいですか?
0247デフォルトの名無しさん
2007/11/30(金) 13:51:43同じ名前の宣言を複数実装できるからやないん?
ポリモーフィズムの延長線かもしれんけど
0248デフォルトの名無しさん
2007/11/30(金) 14:04:54例えば、
System.Drawing.Image と
System.Web.UI.WebControls.Image を
区別できるようにするため。
0250デフォルトの名無しさん
2007/12/01(土) 10:12:50わあああ
Containsがあるううう
0251デフォルトの名無しさん
2007/12/01(土) 10:15:02ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
0252デフォルトの名無しさん
2007/12/01(土) 14:19:03foreach ( DataGridViewRow row in grid.Rows ) {
MessageBox.show( row.Cells[ "Directory" ].ToString() );
MessageBox.show( row.Cells[ "File" ].ToString() );
}
このように各行のそれぞれの値を見ようとしています。
Formで表に表示されている値はちゃんとディレクトリとファイル名が表示されているのですが、
上記コードで値を取り出すと、
DataGridViewTextBoxCell { ColumnIndex=0, RowIndex=0 }
DataGridViewTextBoxCell { ColumnIndex=1, RowIndex=0 }
のような値が取得されてしまいます。
これは何が悪く、どのように書くのが正しいんでしょうか。
0253デフォルトの名無しさん
2007/12/01(土) 14:43:13ToString()は値を取得するためのメソッドじゃないし、そういう形式の文字列を返すとドキュメントにも明記されてるだろ。
0254デフォルトの名無しさん
2007/12/01(土) 14:49:15すいませんアホでした
0255デフォルトの名無しさん
2007/12/01(土) 15:45:29これらのボタン間の空白を設定するにはどうすればよいでしょうか?
MSDNを読むとMarginプロパティがそれらしいと思ったんですが、どうも影響しないようです。
0256デフォルトの名無しさん
2007/12/01(土) 16:12:37TableLayoutPanel使うか、
Panel に Button いれて
Panel の Padding を設定して
Panel の Dock を Right
Buttonの Dock は Fill
0257デフォルトの名無しさん
2007/12/01(土) 17:18:46ありがとうございます。
んーどっちもなんだか微妙ですね。
大したロジックでもないので手動でレイアウトすることにします。
0258デフォルトの名無しさん
2007/12/01(土) 17:40:39System.Collections.GenericのLinkedListとLinkedListNodeを使って、
ダブルリンクリストを作り、データ追加イベントが発生すると、ある所
からデータを抜き出してリンクリストに追加、データ削除イベントが発
生すると、リンクリストから削除って感じのクラスを作ろうとしてます。
http://msdn2.microsoft.com/ja-jp/library/ahf4c754(VS.80).aspx
のサンプルを見たのですが、今いちどうすれば良いのか分からなく困
っております。と云うのは、データの追加と削除を行う場合、サンプル
では行き成りLinkedListNodeに実データを入れて、次にLinkedList作っ
て作ったLinkedListにLinkedListNodeを追加となってます。
LinkedListNode<String> lln = new LinkedListNode<String>( "orange" );
LinkedList<String> ll = new LinkedList<String>();
ll.AddLast( lln );
ダブルリンクリストを作る場合とかって最初に空のノード作って、作った
ノードに対してデータを追加して行く、下のようなイメージを持ってました。
LinkedListNode<String> lln = new LinkedListNode<String>();
LinkedList<String> ll = new LinkedList<String>("HOGE");
lln.AddLast( ll );
動的に発生するデータを追加して行きたいのですが、どの様に実装すべ
きでしょうか?
0259デフォルトの名無しさん
2007/12/01(土) 17:46:36これを参考に、ほぼ同じ作りで動画を再生しようとしています。
再生する動画はファイルパスをリストで持っておき、停止イベントから
PlayVideoClip()を呼び出して数珠つなぎに再生します。
こちらの例とは異なり、フルスクリーンで再生します。
で、困っていることなんですが、音量を調整+ミュートにできるようにしたいと思い、
とりあえずミュートを実装しようとしたところ、
videoClip.Audio.Volume = 0; // Video videoClip
としても音量が変わらず、さらに再生が終わって停止した時に
停止イベントが呼ばれなくなってしまいました。
正しく音量調整するにはどうすればいいのでしょうか。
0260デフォルトの名無しさん
2007/12/01(土) 17:49:38ミュート自体は
videoClip.Audio.Volume = -10000;
とすることで実装できました。0は最大音量らしいです。
停止イベントが呼ばれず連続再生できなくなる件について、アドバイスをいただけると助かります。
0261デフォルトの名無しさん
2007/12/01(土) 20:11:44何言ってんのかわからない。
0262デフォルトの名無しさん
2007/12/01(土) 20:53:48ほぼ同じ作りったってコードみなきゃ話にならない
0263デフォルトの名無しさん
2007/12/01(土) 21:24:30なにがしたいのかよくわからんけど
そのサンプルは、こうしたらこんな風に状態が変わるよっていうだけのことで大した意味は無いだろ
LinkedListが自動的にリンクリストを作ってくれるから
余計なこと考えずに素直に使えばいい
0264263
2007/12/01(土) 21:30:01そのサンプル通りに使えば自動的にリンクリストが作られる
要素をリンクしていくのはLinkedListの仕事だから余計なこと考えなくていい
0265デフォルトの名無しさん
2007/12/02(日) 00:28:31サンプル通りにやればリンクリスト作られるのは分かるんですが、
最初入れるデータが無い状態で、LinkedListNodeのインスタンス
が作れないので困ってます。
サンプルだと、
LinkedListNode<String> lln = new LinkedListNode<String>( "orange" );
"orange"を最初に入れてますけど、
LinkedListNode<String> lln = new LinkedListNode<String>();
こうするとエラーになる点と、
LinkedListNode<String> lln = new LinkedListNode<String>( "orange" );
LinkedList<String> ll = new LinkedList<String>();
ll.AddLast( lln );
最初の1回目だけLinkedListにLinkedListNode入れて、2回目以降
の処理では。
ll.AddFirst( "red" );
ll.AddLast( "yellow" );
と直接データをLinkedListに入れてるので、1回目と2回目以降で処
理を分割させないと駄目なので、1回目と2回目を外見から見た時に
同じ操作でリンクさせて行くようなクラスを作りたいんですが、その
作り方が分からないのです。
0266デフォルトの名無しさん
2007/12/02(日) 00:37:080267デフォルトの名無しさん
2007/12/02(日) 00:49:23LinkedList<T>はノード全体を管理しているのだから、
そのイメージのような空のノードなんて作る必要はなく、
LinkedList<T>のインスタンスに直接AddLastすればいいぞ。
そもそもLinkedListNodeなんて要素を追加するときにいちいち作るもんじゃないと思う。
0268デフォルトの名無しさん
2007/12/02(日) 01:14:00今MSDNでLinkedListとLinkedListNodeをもう一度見てた所ですが、
ちょっと頭混乱して来ました…_| ̄|○
なんか見てると、264氏や267氏の言われるようにLinkedListに直接
突っ込んで行けば良いのは分かってきましたが、LinkedListNodeと
LinkedListとの関係が分からなくなってしまいました。
> そもそもLinkedListNodeなんて要素を追加するときにいちいち作るもんじゃないと思う。
私の言いたいのも正にそこでして、自クラスのコンストラクターで空
のノードを用意出来れば良いと思ってたので、
LinkedListNode<String> lln = new LinkedListNode<String>();
としたかった訳ですが、これだとコンパイルエラーとなります。
リストにデータを入れて行く場合は良いのですが、リストからデータ
を読む場合や消す場合、LinkedListNodeのPrev/Nextが必要になる
と思うのですが、その場合どの様にすれば良いでしょうか?
0269デフォルトの名無しさん
2007/12/02(日) 02:07:05LinkedListからLinkedListNodeを取り出したければ、
LinkedListのFirst/Lastプロパティ。ほかFind/FindLastメソッドも。
こっちからLinkedListNodeを作る必要はない。
LinkedListの要素をなめたいだけならforeachにも突っ込める。
0270デフォルトの名無しさん
2007/12/02(日) 06:57:57そもそも内部構造の詳細を意識しなくても利用できる、
内部構造の違いにかかわらず操作できる、
ようにするためにコレクションのクラスがあるんだから。
LinkedListNodeは構造を意識した直接的な操作も
サポートするために使えるようになってるだけで
コレクションを表すのはあくまでLinkedListの方、使うのも普通はこっち。
0271デフォルトの名無しさん
2007/12/02(日) 14:09:05LinkedListNode<string> lln = new LinkedListNode<string>(null);
としておくか、アイテムなければ
= new LinkedListNode<string>(null);
するかでいいんじゃね?
0272デフォルトの名無しさん
2007/12/02(日) 14:09:56としておくか、アイテムがなければ
= new LinkedListNode<string>(1つ目のアイテム);
するかでいいんじゃね?
0273デフォルトの名無しさん
2007/12/02(日) 14:51:04LinkedList<string> ll = new LinkedList();
だけでおk
0274デフォルトの名無しさん
2007/12/02(日) 17:40:13LinkedListNode自体がデータを含んでいる実体な訳ですね。
で各LinkedListNodeをLinkedListで繋いでいると。
LinkedListNodeとLinkedListの機能を逆の意味にとられえてたので混乱
してました。
リスト構造の頭と尻尾を自前で管理しようと思って、HeadNode/TailNode
見たいなのを作る為に、LinkedListNodeが存在してる物と思ってたんで
すが、LinkedListのFirst/Lastがその役割をもっててLinkedListクラス内
で自動的に管理されてる訳ですね。
どうもお騒がせ致しました。
0275たろう
2007/12/02(日) 18:11:05現在googleの検索エンジンの機能をWindowsアプリで作成しようと
思っています。
作成すると言っても検索エンジンを1から作るのでは無く、
実際にはWindowsフォームのTextBoxに入力されたら(入力値を�@とする。)
Google(http://google.co.jp)画面内の入力エリア
に�@をコピーし、Googleの検索ボタンを自動で押下し、
表示された検索一覧(データ)をWindowsフォーム内に表示したいと
考えています。
WEBページの内容を取得する方法は知っているのですが、
「Google等の検索エンジンに検索値を入力し検索ボタンを
自動で押下して検索データを取得する。」
という方法が分かりません。
何か参考になるサイト等ごございましたらお教え願います。
0276デフォルトの名無しさん
2007/12/02(日) 18:13:19"http://www.google.co.jp/search?q=�@"
0277たろう
2007/12/02(日) 19:13:57ありがとうございます。
因みに
"http://www.google.co.jp/search?q=�@"
といったWEBページのボタンを押した時にWEBサーバに送られる情報
はどの様にして調べているのでしょうか?
何か参考になるWEBサイトをご存知でしょうか?
例えば、Googleについては上記の方法で行ける事は分かったのですが
Yahoo / MSN Serch等も時間に余裕が出来たらチャレンジしてみたいと
思っています。
0278デフォルトの名無しさん
2007/12/02(日) 20:37:230279デフォルトの名無しさん
2007/12/02(日) 20:46:41とりあえず文字列はUrlEncodeしなきゃだめよ
0281デフォルトの名無しさん
2007/12/02(日) 21:32:550282デフォルトの名無しさん
2007/12/02(日) 21:57:36バイナリをあれこれ弄って一つのファイルに書き出そうとしています。
出力時には元のファイルを100KBずつ読み込んで、FileStreamとBinaryWriter を使って、
順次書き出ししようと考えているのですが、
BinaryWriter をCloseしないとファイルに何も書いてくれないという状況です。
どなたか、順次書き出しの手ほどき、よろしくお願いします。
0283デフォルトの名無しさん
2007/12/02(日) 22:03:190284デフォルトの名無しさん
2007/12/02(日) 22:05:210285デフォルトの名無しさん
2007/12/02(日) 22:19:54埋め込まれたリソースとして動画ファイル(.aviファイル)を埋め込んだのですが、このファイルを再生するにはどうしたらよいのでしょうか?
.wavファイルや.jpgなどはGetManifestResourceStreamでストリームを取得した後、コンストラクタに入れてやれば再生できたのですが
動画クラスって見つからなかったので、どうやって再生したらよいのでしょうか?
MediaPlayerやDirectShowはどうやらファイル名を指定して再生するようで今回のようにストリームから再生することができませんでした。
0286デフォルトの名無しさん
2007/12/03(月) 08:00:19つけなければアクセスに時間がかかるとか何か不都合がありますか?
0287デフォルトの名無しさん
2007/12/03(月) 08:12:190288デフォルトの名無しさん
2007/12/03(月) 08:42:46ありがとう!早速直します!
0289デフォルトの名無しさん
2007/12/03(月) 10:46:56その理由を簡単にでも教えてください
0290デフォルトの名無しさん
2007/12/03(月) 11:05:13■ このスレッドは過去ログ倉庫に格納されています