C#, C♯, C#相談室 Part55at TECH
C#, C♯, C#相談室 Part55 - 暇つぶし2ch467:デフォルトの名無しさん
10/02/28 13:21:57
.NET 2.0のlistviewで質問です。
View=Details、オーナードロー、仮想モード、MultiSelect=true、HideSelection=falseにしています。
カラムをクリックしたらソートするようにしてるんですが、選択行が変化しません。
たとえば3行目が選択されていたとして、ソートの結果3行目のデータが2行目に移動しても
相変わらず3行目のみ選択された状態になります。
このあたりの処理も何となく自分でやらなきゃとは思うんですが、どうしたらいいでしょうか?

468:デフォルトの名無しさん
10/02/28 14:49:58
オーナードローなんだから自分で描画が必要でしょう。
OnDrawColumnHeader、OnDrawItem、OnDrawSubItemのイベントを自分で記述する。

469:467
10/02/28 15:10:36
>>468
それらのハンドルは記述していて、ソートを行わなければ正常に表示されます。
問題は、ソート後に描画しようとしているデータがソート前に選択されていたかどうかを
どうやって知るか、ということだと思うんですが。

470:デフォルトの名無しさん
10/02/28 15:11:11
オナニードロー

471:デフォルトの名無しさん
10/02/28 15:33:11
>>467
それはオーナードロー関係ないんじゃねーの?
ソートをかけるタイミングで行の位置じゃなく選択行のデータを覚えてて
ソート後にそのデータに対して選択をセットする・・・とかだろ

472:デフォルトの名無しさん
10/02/28 15:34:53
VirtualModeの場合、
まず、各アイテムの選択状態も自分で保持しておく必要がある。
で、ソートが終わった後でそれに従ってSelectedIndicesをクリアして追加したりする。

473:デフォルトの名無しさん
10/02/28 15:59:24
SubItemごとに固有のtag値を持って描画時に判断すればいいんじゃないのか?

474:デフォルトの名無しさん
10/02/28 16:12:32
ソート前のSelectedItemsから項目コピーしといて、
ソート後にSelectedIndices.Clearして、Itemsの各itemを
コピーしといた項目にあるかどうかContainsしてSelectedIndices.Add
じゃないかなー?試してないけど。

475:467
10/02/28 17:09:14
>>471-474
ありがとうございます。
なるほど SelectedIndicesがポイントですね。
ちょっと試してみます。

476:デフォルトの名無しさん
10/03/01 00:07:41
Assertに引っかかるとダイアログが出る。
だが、そのダイアログが大きすぎで画面からはみ出てしまう。
このままじゃあ、ボタンすら満足に押せないんだが、どうにかする方法はない?

477:デフォルトの名無しさん
10/03/01 00:19:11
ARIのどれかキーボードで押せばいいんじゃね

478:デフォルトの名無しさん
10/03/01 00:56:19
出力するメッセージを減らす

479:デフォルトの名無しさん
10/03/01 01:51:37
なんでAssertでそんな膨大なメッセージが要るんだ…


480:デフォルトの名無しさん
10/03/01 04:17:51
>>479
普通にAssertさせたら、ものすごい行数のスタックログが表示されて…以下略

481:デフォルトの名無しさん
10/03/01 07:35:13
ダイアログにフォーカス映してCtrl+C

482:デフォルトの名無しさん
10/03/02 21:29:24
mouse enterで設定したテキストを表示させたいんだけど、その表示のさせ方が、htmlでいうaltタグとか画像のtitleタグ
みたいに説明を出したい。

483:デフォルトの名無しさん
10/03/02 21:30:41
ああ途中送信してしまったわかりにくい説明で申し訳ない


484:デフォルトの名無しさん
10/03/02 21:33:38
ToolTip

485:デフォルトの名無しさん
10/03/02 21:49:29
ありがとう



486:デフォルトの名無しさん
10/03/02 22:52:20
WCFのシリアライズ便利だな
XmlSerializerよりもずっと使いやすい

487:デフォルトの名無しさん
10/03/02 23:15:13
>>486
プロレス団体みたいな名前がついた技術は今だにまったく使ったことないやw
XMLシリアル化と比べて特にどんな点が便利なの?

488:デフォルトの名無しさん
10/03/02 23:18:16
教えない♥

489:デフォルトの名無しさん
10/03/02 23:41:16
プロパティだけではなくフィールドもシリアライズ可
メンバや型がpublicでなくてもいい
Dictionaryもおk
循環参照対応
速い軽い
SerializableAttribute, ISerializableにも対応

欠点
XMLのフォーマットはほとんど制御できない。既存のXML文書の読み取りには使えない。

490:デフォルトの名無しさん
10/03/02 23:42:38
連続して申し訳ない。

Accessと繋いでデータグリッドビューにデータを表示させてる。
データセットでselect * fromテーブル名 でやってるから主キーまでdgに表示されちゃうんだよね。

編集の時に主キーが一致するものを・・・にしてあるから主キーは絶対取得したい。けどdgにはでてこないでほしい・・・


あとでボタンを押したら選択されてる行の中身を全部からにしたいんだけどうまくいかない。
currentRowsさん調べたけどわからなかった。



491:デフォルトの名無しさん
10/03/02 23:43:37
要するにSoapFormatterの出力を普通のXMLに変更したようなもんか

492:デフォルトの名無しさん
10/03/02 23:50:34
>>490
デザイナでデータソース設定してないの? 列の編集とかできるのに
どうしてもコードでやらなきゃ気が済まないってんならLoadイベント辺りでDataGridView.ColumnsからRemoveすればいいけど
現在行とか使うならデータソースにはBindingSource使うのがベター

493:デフォルトの名無しさん
10/03/02 23:55:42
>>489
なるほど。
型がpublicでなくてもいいのは魅力かも。
XMLSerializerだと、設定値を保存するための他からは用のないインナークラスを
publicにする必要があったから。

バージョントレランスはどうなのかね。
メンバーが増えたり減ったりしてもそのまま読めるんだろうか。

494:デフォルトの名無しさん
10/03/02 23:57:59
何をシリアライズするかはあくまで明示的に決めるのでXmlSerializerに近いかな
型にDataContract属性を付けた場合はDataMember属性が付いたメンバ(private可)だけがシリアライズされて
DataContract属性を付けない型についてはパブリックメンバのみがシリアライズされるようになってる

495:デフォルトの名無しさん
10/03/03 00:04:02
>>492
dg部分は他人が作ったんだけどめちゃくちゃなソース書いてて、ソース書けないのにデザイナ使わずに設定してた。

removeタメしてみます。感謝。

496:デフォルトの名無しさん
10/03/03 00:24:58
>>493
とあるゲームで使ってるけど、増えても減っても大丈夫だよ。
ないバージョン→あるバージョンの場合は、エラーにならないが追加されたフィールドは初期値
なので自分で初期化しないと駄目。
特に a= new hoge()とか書いているやつは、newされていないので自分で生成する必要がある。
今OS再インスコしたばかりで手元にないけど、確かデシリアライズされた時に呼ばれるメソッドが
あるのでそこで初期化すればいい。

あるバージョン→ないバージョン
シリアライズされたフィールドは無視してくれる。
特に処理必要なし。

497:デフォルトの名無しさん
10/03/03 00:26:44
ごめん、WCFのシリアライズじゃなくて.Netのシリアライズの話だったorz

498:デフォルトの名無しさん
10/03/03 06:24:13
Webプログラムしか経験がなく動画処理に手を出してみたくてC#はじめました
URLリンク(support.microsoft.com)
これを見てソースをコピペして適当な動画にさしかえて実行したところ
音声がなるのみで映像がでてきませんでした
何を追加したらよいのでしょう?
コメントもないし何をしてるかよくわかりませんが
一応実行できるソースをいただければ後は頑張って調べてみたいと思うので
どうかよろしくお願いします
しかしMSDNのドキュメントは読みづらいですねIDE(VC#)も使いにくいし・・・
なれるまで時間かかりそうorz

499:デフォルトの名無しさん
10/03/03 06:41:24
MSDNが読みづらいってのは同意するけど、VS以上のIDEって存在するか?

500:デフォルトの名無しさん
10/03/03 08:30:41
月蝕

501:デフォルトの名無しさん
10/03/03 09:00:39
eclipse も VS も似たようなもんだと思うけどなぁ。

シコシコ書くなら emacs ちゃん!

502:デフォルトの名無しさん
10/03/03 09:35:05
>>498
うちはXPだけど、再生するファイルを以下にしてちゃんと表示された
objMC.RenderFile( @"C:\WINDOWS\clock.avi" ); //このファイル何のためにあるんだろ
映像codecの問題じゃないかな
その映像が出ない動画、エクスプローラからダブルクリックで表示される?

503:デフォルトの名無しさん
10/03/03 09:37:42
>>502
windows98くらいからの名残じゃなかったっけ?
//このファイル何のためにあるんだろ
システムフォルダに結構昔からの名残があったりするよ

504:デフォルトの名無しさん
10/03/03 10:29:44
Win3.1のVideo for Windowsにもあったな。

505:デフォルトの名無しさん
10/03/03 13:33:08
>>496
それは問題ないとは言わないだろうw
XmlSerializerやDataContract(WCF)では中身を丸々保存するんじゃなくて
外から見て書き写すので実装がごっそり変更されてもかまわない

506:498
10/03/03 16:57:24
レス遅れてすみません。
>>502さんのファイルにしたら再生することができました。
他のaviで試してみたところ正常に動作したので
最初に実験に使ったファイルがmpgだったのがいけなかったようです。
コーデックはffdshowが使われているようです。
wikipediaの説明を見るかぎりコーデックが入ってればなんでも再生できそうな雰囲気だったのですが、
何か勘違いしているのかもしれません。
再生できましたのでソースの意味をこれから調べてみたいと思います。
レスいただいた方ありがとうございました。

ちなみに普段使ってるのはEclipseです。
似たようなもんなんですけど何かが違う・・・
何がおかしいのかよくわからないけど細かいところで違和感が・・・
とそんな感じです。

507:デフォルトの名無しさん
10/03/03 22:21:12
ボタン押したらパネルのbackground imageを無くして初期状態にしたんですがどうすればいいでしょうか

508:デフォルトの名無しさん
10/03/03 22:38:11
したんだったらそれでいいじゃないか
したいんだったらnull入れとけ

509:デフォルトの名無しさん
10/03/04 07:54:54
メモ帳なんかで保存しないで閉じた時になるようなサウンドなんですが
こういうWindows専用のプログラムって
Windowsフォルダ内にそういうファイルがあると踏んでプログラムするもんなんでしょうか?

510:デフォルトの名無しさん
10/03/04 07:58:48
>>509
あれはwindowsのシステムサウンドを鳴らしてるだけでしょ

windows システム サウンド
とかでググルとわかるよ

511:デフォルトの名無しさん
10/03/04 08:33:00
>>510
ありがとうございます
鳴らすための専用のプロパティまで用意されていたんですね
簡単に鳴らすことができました

512:デフォルトの名無しさん
10/03/05 00:52:45
>>511
それぞれの時に鳴る音はWindowsの設定で変更できるよ

513:デフォルトの名無しさん
10/03/05 05:18:19
普段まったく見えないコンポーネント群の中で
どれがどういう奴か網羅してるサイトとかってある?


514:デフォルトの名無しさん
10/03/05 06:19:50
> 普段まったく見えないコンポーネント群

ってなんだよ?

515:デフォルトの名無しさん
10/03/05 08:57:49
.NETでコンポーネントっつったらIComponent継承してる奴全部だと思うけど
全部網羅してる奴なんてMSDN以外にないだろうな

516:デフォルトの名無しさん
10/03/05 10:11:43
正規表現で、

Hoge(Hoge(Hoge("unko","unko2"),"hogehoge"),"syobo-n")

みたいのを解析したいとしたらHoge(xxx,xxx)のような感じでかつなかにHoge(xxx,xxx)を含まないものでマッチさせて、
それを取得するとともに適当な文字、たとえば###にReplaceしてその上の階層をマッチさせて…みたいな感じになるのかの.


まんどくせorz


517:デフォルトの名無しさん
10/03/05 10:12:12
WPFのコンポーネントはIComponent使わないよ

518:デフォルトの名無しさん
10/03/05 10:15:48
>>516
一番いいのは解析しなくて済む方法を考えることだお

519:デフォルトの名無しさん
10/03/05 10:21:15
>>516
ちゃんとソースコードの解析とかDSLとかやりたいんだったら
伝統的なコンパイラ製作の手法を使ったほうがいいよ
C#ならGPPGとか使ってパーサを生成する

520:デフォルトの名無しさん
10/03/05 10:21:17
こんなの解析したとしてもしれてるだろ

521:デフォルトの名無しさん
10/03/05 10:22:11
>>516
こちらへ
正規表現 Part6
スレリンク(tech板)

c#の独自の機能ってわけじゃないので

522:デフォルトの名無しさん
10/03/05 10:51:58
入れ子のある構造は正規表現向きじゃないな

523:デフォルトの名無しさん
10/03/05 11:38:15
>>514

ツールボックス右クリック アイテムの選択で出てくるリストで
チェックされて無いやつ全部

524:デフォルトの名無しさん
10/03/05 11:43:44
MSDN以外にあるわけねえだろ

525:デフォルトの名無しさん
10/03/05 11:45:33
なんかでるなあ
グレーアウトというか半透明で後ろの色と重ねてあるというか・・・そんな表示で

部品の名前見てるとVB6.0時代の名残?

526:デフォルトの名無しさん
10/03/05 11:58:23
引数の形式を>>516の(再帰, "文字列")に限るなら
(?<id>[\w\W]+)\((?<r>.*),"(?<str>[^"]*)"\)
で最長一致でキャプチャしてrについて繰り返せばいけそう
一般的にやるのは.NETの正規表現だけではたぶん無理

527:デフォルトの名無しさん
10/03/05 13:28:13
.NETにはじめから付いてるコンポーネントの中でデフォルトで
ツールボックスに表示されてないものは実際あんまり使うことないと思うよ
VB6っぽいのはたぶん.NETじゃなくてCOMのコンポーネント
COMの方はどうしてもというわけでなければなるべく使わない

528:デフォルトの名無しさん
10/03/05 15:53:32
>>527
乗り物全集の中で、デフォルトが自家用車だらけなのに
裏ではこっそり1輪車からアポロとか回天とかあったらさ・・・
必死なときは回天使ってみたい場合もあるじゃん

知らなきゃ自動車を容器で包んで見た目潜水する特攻≠自沈機械つくらなきゃならん

529:デフォルトの名無しさん
10/03/05 15:56:14
何が言いたいかわかりにくいよw

理解したけどw

530:デフォルトの名無しさん
10/03/05 17:16:04
で、誰もメンテできない、糞アプリが出来上がると

531:デフォルトの名無しさん
10/03/05 18:26:00
System.Drawing.BitmapをDIBSectionみたいにピクセルにポインタで
高速にアクセスしたいんですけどどんな感じで実現できますか。
ゲームで利用するためにαブレンドとか加算合成とかを実装したいです。


532:デフォルトの名無しさん
10/03/05 18:59:21
LockBitsでググれ
でもどっちにしろGDI+でゲーム作るのはやめたほうがいいと思う
DirectXやWPF使えば全ての努力が虚しくなるくらいの圧倒的な速度が簡単に得られる

533:デフォルトの名無しさん
10/03/05 19:03:08
LockBitsしてBitmapDataに書き込みしてUnlockBitsで書き戻し
ただしコピーが入る

WPFでPixelShader使った方が早いかも知れない

534:デフォルトの名無しさん
10/03/05 19:47:14
なるほどやっぱりメモリ直接触れないのがネックですね。
WPFってコントロールをXML経由で制御するイメージがあって
遅いと思い込んでたんですけどちょと試してみようかな…
C++ではDIBSection使ってたからDirectXはちょっと今更感が…
ありがとうございました。


535:デフォルトの名無しさん
10/03/05 20:54:30
WPFもDirectXベースだからな
αブレンドや加算合成などは自分では一切実装せずに全てハードウェアに丸投げするのが基本

536:516
10/03/05 22:40:20
いろいろレスあり。
正直ANTLRでも使いたいところだけど、ほんの一箇所の機能のためにランタイムDLLがいくつも増加するのがなぁ…

537:デフォルトの名無しさん
10/03/06 00:19:13
字句解析 & 構文解析は書いてみると想像してるより結構簡単だから
限定された部分だけなら自前で書いちゃうのもありだと思うよ。

538:デフォルトの名無しさん
10/03/06 00:32:22
今の時代PCでもCPUとメモリのリソースが滅茶苦茶多いしブーストラップの必要も全くないから
字句解析と構文解析なんてあんまり神経質にならなくても適当な資料当たって組めば良いと思うよー

539:デフォルトの名無しさん
10/03/06 00:38:32
ANTLRはランタイムライブラリの出来が悪いんだよなあ
Ironyなんか面白そう

540:デフォルトの名無しさん
10/03/06 01:59:45
GDI+はラスタオペレーションなくなったのか
殺してやる

541:デフォルトの名無しさん
10/03/06 05:17:04
>>540
つうほうしました

542:デフォルトの名無しさん
10/03/06 11:24:10
時代はピクセルシェーダだよ
WPFはもちろんSilverlightでもサポートされてる

543:デフォルトの名無しさん
10/03/07 00:19:54
やっぱWPFやんなきゃダメだな orz

544:デフォルトの名無しさん
10/03/07 00:30:38
C#の文法的なことを聞きたいのですが、

Button のClickイベントにプラスするdelegateの匿名メソッドの中でthisって書いてもこのthisはButtonでなくFormをさすんでしょうか?

ちなみに、Form1の中にButton1があり、Form1.cs(class名:Form1)のファイルに書いています。

545:デフォルトの名無しさん
10/03/07 00:32:49
うん
JavaScriptとは違うというかJavaScriptが異端

546:544
10/03/07 00:35:47
>>545 ありがとうございます。
JavaScriptだと逆の結果になるんですね。

とりあえず、C#の場合はFormをさすということがわかり、ありがたいです。

結構長い間疑問だったんで・・ありがとうございました。

547:デフォルトの名無しさん
10/03/07 08:30:37
>>546
>C#の場合はFormをさすということがわかり
ちょっと違う
>>544の例としてはそうだけどね

正確には今コード書いてるクラスのことになる
IDEでコード書く場合はFormクラスを継承したForm1にコードを書くことが多いので
thisがForm1をさしてるけど
buttonを継承したクラスを作ってその中でthisを使えば
buttoを継承したクラスをさす

class MyButton : Button
{
public MyButton()
{
//この場合はMyButtonのこと
this.size = new Size(120,30);
}
}

548:544
10/03/07 16:24:51
>>547
どうもありがとうございます。今書いてるクラスが主?っていうかthisの主体になるんですね。

よ~く、わかりました。勉強になりました。ありがとうございました。

549:デフォルトの名無しさん
10/03/07 19:48:15
クラスというよりはインスタンスだな
staticメソッドでは使えないから

550:デフォルトの名無しさん
10/03/07 22:48:55
ちょいと質問
SELECT Format([日付テーブル]![日付],"yyyy/mm/dd") AS 年月, スケジュール.タイトル, スケジュール.メモ帳 FROM スケジュール ORDER BY Format([日付テーブル]![日付],"yyyy/mm/dd");

これC#で使いたいんだけど、yyyy/mm/ddのところどう書いたらちゃんと動いてくれる?


551:デフォルトの名無しさん
10/03/07 23:42:30
>>550
LINQでってこと?
これでいける。
using (var context = new MyDBDataContext())
{
var rows = context.Order
.Select(r => string.Format("{0:d}", r.transactTime));

foreach (var row in rows)
Console.WriteLine(row);
}

552:デフォルトの名無しさん
10/03/07 23:45:40
>>550
これC#というよりSQLだよね
FROMに指定されてないテーブル参照してるよ
使ってるDBとエラーメッセージくらい書こうね

あと自動で作成されたSQLそのまま使うより
もう少し簡潔にした方が良いよ

553:デフォルトの名無しさん
10/03/08 01:37:00
そうか、春休みか。

554:デフォルトの名無しさん
10/03/09 12:35:42
なぜかMSDNの字が小さく変更されたような

555:デフォルトの名無しさん
10/03/09 13:10:44
ライトウェイトがすばらしい

556:デフォルトの名無しさん
10/03/09 15:42:17
・構造体では、インターフェイスを実装できます。

なんか意味あんのかなこれ

557:デフォルトの名無しさん
10/03/09 15:43:42
なぜ意味が無いと思ったのか聞きたい

558:デフォルトの名無しさん
10/03/09 16:31:51
IComparable<T>とかIEquatable<T>とかは知らないうちに恩恵にあずかってる

559:デフォルトの名無しさん
10/03/09 17:38:10
1/1
Type.GetTypeで希望のTypeを取得出来なくて困っています。

取得したいTypeはアプリケーションのプロジェクトとは違う、
ライブラリ用プロジェクトで作成されたアセンブリ内のclassのものです。

アプリケーションのプロジェクトにて、ライブラリ用の
プロジェクトをインポートして使用しています。

テストコードでは下記のようにしてみました。

System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom( "Lib.dll" );
var _targetType = typeof( KML.FileFormat.PseudoXML.ASDASD );

Type _type = Type.GetType( _targetType.FullName, true, false );

症状は TypeLoadException が発生します。


560:デフォルトの名無しさん
10/03/09 17:41:17
2/2
そこで、アセンブリ名を指定して

Type _type = Type.GetType( _targetType.FullName + ",Lib.dll", true, false );

とした場合は、GetType内で、

System.IO.FileNotFoundException: ファイルまたはアセンブリ
'Lib.dll'、またはその依存関係の 1 つが読み込めませんでした。

との事、なので

Type _type = Type.GetType( _targetType.FullName + @",C:\aa\bb\cc\Lib.dll", true, false );

とし、アセンブリへのフルパスを指定した場合は、
System.IO.FileLoadException: 指定されたアセンブリ名またはコードベースは無効です。

となり、いずれも目的を果たせませんでした。

ITMediaやリフレクションの記事を掲載しているブログなどは、
簡単に実現できるような感じで書いているのですがなかなか上手くいきません。

どなたか問題点をお教えいただければ幸いです。
よろしくお願いします。

561:デフォルトの名無しさん
10/03/09 17:43:35
作業環境は、
OS:VISTA32bit
VisualStudioC#2008ExpressEdition
対象フレームワークの設定は3.5です。


562:デフォルトの名無しさん
10/03/09 17:45:49
何をしたいのか分からん
アセンブリを動的ロードするならAssembly.GetTypeとか使えばいい

563:デフォルトの名無しさん
10/03/09 17:53:48
最終的にやりたいことは設定ファイル(text)に基づいて、
指定のclassをインスタンス化する事です。

その前段階で指定したclassのTypeが必要なようですので、
Type.GetTypeで得ようと試みていたところです。

564:デフォルトの名無しさん
10/03/09 17:57:36
> その前段階で指定したclassのTypeが必要なようですので、
そのTypeはLoadしたAssemblyオブジェクトからAssembly.GetType等で取得するもの

565:デフォルトの名無しさん
10/03/09 18:00:50
どうでもいいけど 1/1、2/2じゃなくて1/2、2/2じゃないのか?

566:デフォルトの名無しさん
10/03/09 18:14:51
>>562>>564
ご指摘ありがとうございます。
Assembly.GetTypeで上手く取得できました。

>>565
たしかに・・・。
申し訳ない。

567:デフォルトの名無しさん
10/03/09 23:22:48
> その前段階で指定したclassのTypeが必要なようですので、
くそわろた。


568:デフォルトの名無しさん
10/03/10 00:50:15
1/1,2/2が地味にきくわ

569:デフォルトの名無しさん
10/03/10 14:30:19
すみません。質問です。
XMLの件なので、こちらで聞くか迷ったんですが、こちらでお願いします。

URLリンク(weather.livedoor.com)

上記のXMLを解析しようと思い、Byte配列に受信しました。
そのByte配列をEncoding.UTF8.GetCharsに入れてやるとエラーになります。
原因を調べると、「~で質問してみましょう」の「質」の字が
e8 0d 0a 35 61 38 0d 0a b3 aa
となっており、「質」の字の間に改行コード(0d 0a)とよくわからない文字列(35 61 38)が入っていました。
(ちなみに「質」はUTF8でe8 b3 aa)

XMLの処理は初めてなので、よくわかっておりません。
こういった経験や、対処された方がおられましたらいい対処法をご教授ください。


環境は.NetMicroFramework、VisualStudio2008Express、WindowsXPProです。

570:デフォルトの名無しさん
10/03/10 14:56:31
>>569
Byte配列に格納する時点で失敗してる可能性が大。

571:デフォルトの名無しさん
10/03/10 15:19:35
これで問題なく読めることが分かる。
using System;
using System.Xml;
class Program {
 static void Main() {
  var xrdr = XmlReader.Create("URLリンク(weather.livedoor.com)");
  var xdoc = new XmlDocument();
  xdoc.Load(xrdr);
  xdoc.Save(Console.Out);
}}


572:デフォルトの名無しさん
10/03/10 15:37:17
35 61 38 -> 5a8 -> 1448
TCPのデータ長がこんなんだっけ?

573:デフォルトの名無しさん
10/03/10 15:40:56
受信の際のエンコードはxmlの中にかかれてるので自動で認識した後
勝手にucs-2に変換されてない?

xmlとかの問題じゃなく文字コードの扱いを分かってないような

574:デフォルトの名無しさん
10/03/10 15:50:52
すみません。
エラーが出たURLは
URLリンク(weather.livedoor.com)
こっちでした


>>570
ちょっと調査してみます。

>>571
丁寧にコードまで書いていただきありがとうございます。
一度Byteに格納しないほうがいいんですかね。
ネットワークが不安定なので、一度ローカルに持って行きたかったんです・・・

>>573
ありがとうございます。
正直文字コードの扱いよくわかってないです。
ローカルにByte配列で持ちたかったので、こういう形になっています。

575:デフォルトの名無しさん
10/03/10 15:52:28
>上記のXMLを解析しようと思い、Byte配列に受信しました。
Byte配列に受信しました。
この部分のコード晒せる?

576:デフォルトの名無しさん
10/03/10 15:55:18
バイト配列取得以降の問題かもしれない。
Socketクラスを参考にしていた場合、そのサンプルはバグというか不親切。
do {
bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
page = page + Encoding.ASCII.GetString(bytesReceived, 0, bytes);
}
をUTF8に変更しただけじゃダメ。これは多バイト文字の途中だろうとお構いなし。
文字の境界を判断するか、それとも全部バッファに取ってから変換する必要がある。

577:デフォルトの名無しさん
10/03/10 16:01:22
あ、 0d 0a 35 61 38 0d 0a の理屈が付かないからそれは無いか・・・

578:デフォルトの名無しさん
10/03/10 16:02:19
>>577
うむ
エスパーしてもしかたないので
>>575なんだよw

579:デフォルトの名無しさん
10/03/10 16:03:04
WebClient.DownloadDataあたりだったら問題ないのかしらん

580:デフォルトの名無しさん
10/03/10 16:05:10
>>579
というか通信にしろファイルにしろエンコード指定しておけば指定したエンコードで読み込んだあと
ucs-2に勝手に変換してくれるはずなんだけどな・・・

581:デフォルトの名無しさん
10/03/10 16:10:56
>>575 そのままコピペなんで無駄なコードあるかもしれませんが・・・
一番下のwhile文で1024バイトずつ読み込んで、大きな配列につないでます。
      String Server = "weather.livedoor.com";
String URI = "/forecast/rss/earthquake.xml";
const Int32 HttpPort = 80;
const Int32 BufferSize = 1024;
using (Socket requestSocket = ConnectSocket(Server, HttpPort))
{
String request = "GET " + URI + " HTTP/1.1\r\n";
request += "Host: " + Server + "\r\n";
request += "Connection: Close\r\n";
Byte[] requestData = Encoding.UTF8.GetBytes(request);
Byte[] recBuffer = new Byte[BufferSize];
Byte[] recBufferFull = new Byte[BufferSize * 100];
requestSocket.Send(requestData, requestData.Length, 0);
DateTime timeoutAt = DateTime.Now.AddSeconds(30);
while (requestSocket.Available == 0 && DateTime.Now < timeoutAt)
{
System.Threading.Thread.Sleep(100);
}
Int32 bytesRead = 0;
Int32 bytesReadBefore = 0;
while (requestSocket.Poll(10 * 1000000, SelectMode.SelectRead))
{
Array.Clear(recBuffer, 0, recBuffer.Length);
bytesRead = requestSocket.Receive(recBuffer);
if (bytesRead == 0)
{ break;}
recBuffer.CopyTo(recBufferFull, bytesReadBefore);
bytesReadBefore += bytesRead;
}

582:デフォルトの名無しさん
10/03/10 16:15:56
Socketとかhttpの練習とか学習?
単純にrssリーダーぽいことができればいいとかなら
WebClientでデータとってきてxmlに投げるとかすればいいだけだよ

583:デフォルトの名無しさん
10/03/10 16:24:36
応答のHTTPヘッダがなんて言ってるのかも気になる

584:デフォルトの名無しさん
10/03/10 16:33:30
>>582
WebClientググったら便利そうですね。
ただ、MicroFrameworkにはないみたいなので、同じような機能のライブラリ提供している方がおられるので、それを利用してみたいと思います。
もしくはHttpWebRequestでいいんでしょうか?

>>583
HTTP/1.1 200 OK\r\nDate: Wed, 10 Mar 2010 07:24:48 GMT\r\nServer: Apache/1.3.41 (Unix) mod_perl/1.30\r\nPragma: no-cache\r\n
Cache-Control: private\r\nVary: User-Agent\r\nContent-Type: text/xml; charset=utf-8\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n4ac\r\n
ヘッダのstring変換後はこんな感じです。

585:デフォルトの名無しさん
10/03/10 16:35:04
chunked

586:デフォルトの名無しさん
10/03/10 16:36:45
>>584
ここのサンプルコードを書き換えたけど問題なく受信できたな
URLリンク(dobon.net)

URLリンク(codepad.org)

最後のtextboxだけ用意してくれ

587:デフォルトの名無しさん
10/03/10 16:41:33
0d 0a 35 61 38 0d 0a
は長さ5a8バイトということか

588:デフォルトの名無しさん
10/03/10 16:42:11
>>585でFAじゃまいか
こういうのは透過的に扱ってくれるライブラリ使わないと面倒くさいね

589:583
10/03/10 16:42:17
>>585
ああやっぱり

590:デフォルトの名無しさん
10/03/10 16:46:10
>>586
丁寧に書いてもらってありがとうございます。
MicroFramework用に変更して使ってみます。

>>587
どうやらそうっぽいです・・・そのバイトずつわけて受信すればいいんですかね?

>>588
chunkedググってみます

591:デフォルトの名無しさん
10/03/10 16:49:22
HTTP/1.1 は chunked で送られてくるからめんどくさいよね

592:デフォルトの名無しさん
10/03/10 16:49:38
>>590
いや・・・
データ本体がそのサイズってことだろ
>>586で受信したテキストデータ

HTTP/1.1 200 OK
Date: Wed, 10 Mar 2010 07:46:23 GMT
Server: Apache/1.3.41 (Unix) mod_perl/1.30
Pragma: no-cache
Cache-Control: private
Vary: User-Agent
Content-Type: text/xml; charset=utf-8
Connection: close
Transfer-Encoding: chunked

4ac
[rssの一つ]
5a8
[rssの一つ]
5a8
[rssの一つ]

以下略
こんなパターンでくるのか

593:デフォルトの名無しさん
10/03/10 16:52:33
もうこの程度ですら自力で実装するのを億劫に感じててヤバイ

594:デフォルトの名無しさん
10/03/10 16:54:02
>>593
そりゃIDE+VC#って人間を退化させるよ

パソコン上でIMEになれてしまって咄嗟に漢字がかけない感覚に似てる

595:デフォルトの名無しさん
10/03/10 16:55:45
MicroF/WはCompactF/WよりさらにAPIが少ないの?

596:デフォルトの名無しさん
10/03/10 16:59:00
>>591
そうなんですか。勉強になります。

>>592
書いていただいたソースは、1024バイトずつ受信してて、resSizeが0になったら受信終わりですよね?
どうやってデータ本体毎にわけるのかよくわからないです。
いただいたソースだと4acとか5a8のような不要な情報も入りそうな気がするのですが。

597:デフォルトの名無しさん
10/03/10 16:59:56
>>595
そうです。かなり少ないです。
しかも英語ページしかないのでなかなかとっつきにくくて・・・

598:デフォルトの名無しさん
10/03/10 17:01:17
>>592
一部訂正
HTTP/1.1 200 OK
Date: Wed, 10 Mar 2010 07:46:23 GMT
Server: Apache/1.3.41 (Unix) mod_perl/1.30
Pragma: no-cache
Cache-Control: private
Vary: User-Agent
Content-Type: text/xml; charset=utf-8
Connection: close
Transfer-Encoding: chunked

4ac
[4acバイト分のデータ(文字コードはどれか不明)]
5a8
[5a8バイト分のデータ(文字コードはどれか不明)]
5a8
[5a8バイト分のデータ(文字コードはどれか不明)]

以下略
5a8
[5a8バイト分のデータ(文字コードはどれか不明)]
0
最後は0で終わってる
こんなパターンでくるのか

599:デフォルトの名無しさん
10/03/10 17:04:56
>>596
いやそんなに難しくないでしょ

4ac 5a8でバイト数(文字数?)を見て行けばいいだけだし
0d0aは単なる改行コードだしね

>>586のコードをMicroじゃないFrameworkで動かしてみて受信データを見てみなよ

600:デフォルトの名無しさん
10/03/10 17:06:20
面倒なんでcodepad使わせてもらった
URLリンク(codepad.org)

601:デフォルトの名無しさん
10/03/10 17:08:29
流れぶった切ってちょい質問

struct A {
int x;
int xsize;
}

int sx = 0;
List<A> alist = new List<A>();
alist.ForEach(delegate(A a) {
a.x = sx;
sx += a.xsize;
}

こういう感じで、構造体リストのある項目を全書き換えしたいんだけども、
forループするしか手はない?
いちいちコピー&書き戻しが発生するからできればしたくない・・・

602:デフォルトの名無しさん
10/03/10 17:12:38
>>599
全部受信してからそれ毎に区切っていく感じでいいんですね。
それなら簡単そうです。
ちょっとFramework変えてやってみます。
ありがとうございます。

603:デフォルトの名無しさん
10/03/10 17:51:06
>>601
どこかで見た流れだ

604:デフォルトの名無しさん
10/03/10 17:52:37
ふらっとC#,C♯,C#(初心者用) Part56
スレリンク(tech板:356-番)
こっちだった

605:デフォルトの名無しさん
10/03/10 18:10:11
まだ効率だけにこだわっているのか

606:601
10/03/10 18:10:45
いや別にループ怖いって話じゃなくてwww
構造体コレクションの実体に直接アクセスしたいってだけ

607:デフォルトの名無しさん
10/03/10 18:11:03
そっちはループ処理したくないというアホ
こっちは多分一時コピー(ry

var tmp = alist[i];
// tmpを変更
alist[i] = tmp;

608:デフォルトの名無しさん
10/03/10 18:16:55
なんで構造体なんだ?
クラスにしちゃえばいいじゃない

609:デフォルトの名無しさん
10/03/10 18:35:40
仕方なく構造体のコレクションを使うときに
効率は別にしてもなんか気持ち悪いのはよくわかる

610:601
10/03/10 18:49:47
>>608
実体コピー前提の使い方するから>構造体な理由
むしろ間違って参照渡ってしまった時のバグが怖い

>>609
そう
値型専用のコレクション操作メソッドとか用意されてないかと思って聞いてみた

611:デフォルトの名無しさん
10/03/10 19:37:42
無限ループって怖くね?(棒読み)

612:デフォルトの名無しさん
10/03/10 21:47:24
>>610
delegate void RefAction<T>(ref T arg);
static void ForEach<T>(this IList<T> source, RefAction<T> action) {
for (int i = 0; i < source.Count; i++) {
var item = source[i];
action(ref item);
source[i] = item;
}
}
効率は知らん

613:デフォルトの名無しさん
10/03/10 22:12:02
そんなことするくらいなら、(サイズが確定した時点で)配列にして普通にfor使う方がまし

var array = list.ToArray();
for(int i=0; i<array.Length; i++) array[i].x = 10;

614:デフォルトの名無しさん
10/03/11 00:40:16
>>602
いまさらだけど、
 チャンクのサイズを見て、そのサイズ分読む
 チャンクのサイズが0なら終わり
という風にしたほうが楽だし速いよ

615:デフォルトの名無しさん
10/03/11 00:42:56
wavファイルを数値データとして見たいのですがどうすればいいですか?

616:デフォルトの名無しさん
10/03/11 00:43:48
大して難しいフォーマットじゃねえし
URLリンク(www.kk.iij4u.or.jp)
でも読め

617:デフォルトの名無しさん
10/03/12 16:09:08
VC#に、クラスとか関数の関連を表示するナビとかハイパーリンクとかの機能ありますか?
いわゆるなんちゃってフローチャート的なやつ

618:デフォルトの名無しさん
10/03/12 17:23:17
よくわからんが IDE の話か?
VisualStudio のクラスビューとかのことかね?

619:デフォルトの名無しさん
10/03/12 17:28:56
クラス図(クラスとか関数の関連を表示するやつ)と、流れ図(フローチャート)は全く別物だが。
クラスビューにはリンク機能は無いけど。一度使ってみれば。

620:デフォルトの名無しさん
10/03/12 17:31:54
HSPみたいなもの言ってるのでは

621:デフォルトの名無しさん
10/03/12 17:35:50
フローって作れるか?

VC++だったら確か関数の上で右クリックすると関連が見得たりしたけど
VC#の場合基本ネームスペース、クラス、メンバ関数とか
なのでそんなフローが必要になることってあんまり無いような

622:デフォルトの名無しさん
10/03/12 19:26:25
TextBoxを普段非表示にしておいて、マウスオーバーで表示されるようにしたいんだけども
Hide()使うとイベント受けてくれない
何かいい手はありますか?

623:デフォルトの名無しさん
10/03/12 19:27:30
表示位置覚えといて親コンテナのマウス移動で表示するかどうか決めるとか?



624:デフォルトの名無しさん
10/03/12 19:28:26
>>622
透明にすればいいんじゃない

625:デフォルトの名無しさん
10/03/12 19:31:30
>>624
textboxは透明にするのは難しいんじゃないかな?
なんかこのスレかふらっとC#でバックカラーとかをいじっても透明にできなかった
とか書き込みがあった記憶が

626:デフォルトの名無しさん
10/03/12 19:33:03
GDI+を使えばいいと思うよ

627:デフォルトの名無しさん
10/03/12 20:27:14
今日気がついたんだけど、Windows Form上のコントロールのアプリケーション設定
(プロパティバインディングって言った方がいいのかな)ってローカライズに
対応してないのかな。

何が言いたいかというと、FormのLanguageで設定する各言語ごとに
プロパティバインディングされたプロパティのデフォルト値を設定する方法がないものかと。

とりあえずリソースと同じようにSettings.settingsをコピーしてSettings.en.settings
とかやってみたがダメだった。

628:デフォルトの名無しさん
10/03/12 20:38:29
>>622
普通に誰でも思いつく泥臭い法でいいんじゃない?
つまりFormのMouseMoveイベントでマウスの座標を監視して、(hideしてある)
TextBoxの場所にマウスポインタが来たらShow()すると。

629:デフォルトの名無しさん
10/03/12 22:36:28
同じ座標に無地のピクチャーボックスを置いて
そっちでイベントを受け取ってみるとか

630:622
10/03/12 23:35:19
WPFのトンネルイベントみたいなのがあるかと思ったらそんなことはなかったぜ!と言う事かあ
見た目だけじゃなく存在自体が消えてしまうのは何とかならないのかなあ>Hide()

631:デフォルトの名無しさん
10/03/12 23:38:19
>>630
Visible=false;

632:デフォルトの名無しさん
10/03/13 00:13:56
派生クラスで適当に幾つかオーバーライドするだけじゃないの

とりあえず、OnPaint, OnMouseEnter(OnMouseHover), OnMouseLeave あたり
もしかしたら、OnPaintBackground も必要かも

633:デフォルトの名無しさん
10/03/13 00:26:36
マウスオーバーでテキストボックス出てくるとか使いにくすぎるw
どういう使い道なんだ

634:デフォルトの名無しさん
10/03/13 00:31:33
>>622
作ってみた。でもかなり対症療法的なコードなのであまり真に受けない方がいいかも。
class TextBoxEx:TextBox
{
  private bool SuppressesPaint { get; set; }

  private bool mIsTransparent = false;
  private bool IsTransparent
  {
    get { return mIsTransparent; }
    set
    {
      if (value != mIsTransparent)
      {
        mIsTransparent = value;
        if (IsTransparent)
        {
          SetVisibleCore(false);
          SuppressesPaint = true;
          SetVisibleCore(true);
        }
        else
        {
          SuppressesPaint = false;
          SetVisibleCore(false);
          SetVisibleCore(true);
        }
      }
    }
  }

635:634
10/03/13 00:32:35
  protected override void OnMouseEnter(EventArgs e)
  {
    base.OnMouseEnter(e);
    IsTransparent = false;
  }

  protected override void OnMouseLeave(EventArgs e)
  {
    base.OnMouseLeave(e);
    IsTransparent = !Focused;
  }

  protected override void OnEnter(EventArgs e)
  {
    base.OnEnter(e);
    IsTransparent = false;
  }

  protected override void OnLeave(EventArgs e)
  {
    base.OnLeave(e);
    IsTransparent = true;
  }

636:634
10/03/13 00:34:10
  protected override void WndProc(ref Message m)
  {
    const int WM_PAINT = 0x000F;
    const int WM_NCPAINT = 0x0085;
    switch (m.Msg)
    {
      case WM_PAINT:
      case WM_NCPAINT:
        if (SuppressesPaint) return;
        break;

      default:
        break;
    }
    base.WndProc(ref m);  
  }
}

- 以上 -

637:634
10/03/13 00:50:28
親がアクティブじゃない時の挙動がおかしいな。
コントロール関係はいろいろ面倒臭いなやっぱりw
思いもよらないところに落とし穴が潜んでたりするし。

638:デフォルトの名無しさん
10/03/13 01:15:19
VC#に最初から入ってるコントロールはイベント処理が微妙なのが多い気がする。
やりたいことがなかなかできなくて、結局自前でフラグ立てながら状態遷移を管理するハメになったり。

639:デフォルトの名無しさん
10/03/13 07:05:42
配列構造体で、
struct vector
{
public int x;
public int y;
}
private void method{
vector[,] point = new vector[100, 100];
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 100; j++)
{
point[i, j].x = i;
point[i, j].y = j;
}
}
}
private void exchange()
{

}
このプログラムで、exchangeでmethodで定義したpoint[,].xを使いたいですけれども、どうすればいいんだ

640:デフォルトの名無しさん
10/03/13 07:14:17
無理だろ。引数で渡すとかスコープを変えるとかせんと。

641:デフォルトの名無しさん
10/03/13 08:09:02
関数の戻値か同じクラス内ならメンバーに持てばいいだろ。
private vector[,] method() {
  :
 return point;
}

642:デフォルトの名無しさん
10/03/13 11:23:51
それじゃまだ実現不可能。

643:デフォルトの名無しさん
10/03/13 11:27:49
一応>>634がいい奴だってことはわかった


644:デフォルトの名無しさん
10/03/13 11:48:19
認識しないからといってインデントに全角スペースを使う男の人って…


645:デフォルトの名無しさん
10/03/13 11:57:19
>>644
やめて~!!

646:デフォルトの名無しさん
10/03/13 12:03:13
2ちゃんねるではよく使うなぁ

647:デフォルトの名無しさん
10/03/13 12:16:55
全角スペース便利
みんなこれからもどんどん使おうね

648:デフォルトの名無しさん
10/03/13 12:17:39
むしろ2ちゃんだと先頭の半角とかは無視されなかった?

649:デフォルトの名無しさん
10/03/13 12:54:23
無視はされない。datでもcgiでもちゃんと残っている

650:デフォルトの名無しさん
10/03/13 13:02:08
codepadとか使えよ
URLリンク(codepad.org)

C#は選択肢にないけどCにしておいて右下のRun Codeのチェックはずしてsubmitボタン押すだけじゃねーか
URLリンク(codepad.org)

651:デフォルトの名無しさん
10/03/13 13:02:29
2ちゃんビューワとかブラウザで見ると無視されるな

652:デフォルトの名無しさん
10/03/13 13:14:46
通常WWW UAは連続するホワイトスペースは一つの半角スペースに置き換えて表示するからね
こういった利用者が書式を指定できない掲示板では仕方がない

653:デフォルトの名無しさん
10/03/13 13:19:46
preタグを認識してくれればいいんだけどな

654:デフォルトの名無しさん
10/03/13 13:58:19
nbsp使えよ

655:デフォルトの名無しさん
10/03/13 16:18:37
 nbsp使ったら、>>レス番 でポップアップしたときに
 nbspって文字列でてこなかったっけ?

656:655
10/03/13 16:19:39
でてきませんでした。

657:デフォルトの名無しさん
10/03/13 16:44:27
test
\s
\t
%89
test
 test

658:デフォルトの名無しさん
10/03/13 17:44:29
C#4.0も良いけど、C#からC++のクラスや関数をC++/CLIを経由すること
なしに簡単に(透過的に)呼び出せるようにしてほしい。

C++/CLIなんていらない。文法がややこしくなるだけだ。VC++は
.Net Frameworkと同じインターフェースをもったNativeなGUI
ライブラリの開発に専念してほしい。

C++0xが正式に確定していない現在、動きがとれんだろうけど
以上の事をMSがやってくれたらC#を使う気になる。

659:デフォルトの名無しさん
10/03/13 17:46:58
使わなくていいよ。

660:デフォルトの名無しさん
10/03/13 17:49:08
>>658
使う気になるとか
C#しか使えない人に失礼だろw

661:デフォルトの名無しさん
10/03/13 17:57:45
そんなに使いたくないなら使わなければいいのに
他にも選択肢はあるよ

662:デフォルトの名無しさん
10/03/13 18:11:53
自分の好みやわがままで言語を選べるなんて、ずいぶんと恵まれた職場だな

663:デフォルトの名無しさん
10/03/13 18:19:57
>662
それなんの社畜自慢?

664:デフォルトの名無しさん
10/03/13 18:27:50
一生その職場にいて自分だけがメンテするならなんでも選べます

665:デフォルトの名無しさん
10/03/13 18:34:30
既存のシステムがあったら大きく外れられないだろ
というかコンベンションというかガイドラインくらいどこにでもあるだろw

666:デフォルトの名無しさん
10/03/13 18:36:56
うちはむしろ特別な事情(ユーザーの指定とか旧環境との兼ね合いとか)
がないかぎり Windows アプリは C# にするってことにしたけどな

667:デフォルトの名無しさん
10/03/13 18:38:19
制約なければwindowsはc#で書きたいなあ
部分的にC/C++は入れたとしてもGUIはC#だわ

668:デフォルトの名無しさん
10/03/13 18:42:36
「チッ.NET入れるのかよ」
というお客様も最近は減ってきました

669:デフォルトの名無しさん
10/03/13 18:44:21
Vista以降で入ってるしね。

670:デフォルトの名無しさん
10/03/13 19:41:48
とりあえず、意味不明のダイアログを表示して落ちるのもアレなので、
.NETが必要だというメッセージを表示するぐらいの配慮はするべき。

671:デフォルトの名無しさん
10/03/13 19:44:11
デフォルトで出る様になってなかったっけ?
ただ英語なのでアホは読んでくれない

672:デフォルトの名無しさん
10/03/13 19:46:47
確かにあれはいただけないな

673:デフォルトの名無しさん
10/03/13 19:52:50
まあバイナリを裸で配布するのは邪道、っていう前提に立ってるんでしょう。
イストーラで配れと。

それにしても、.NET Frameworkは単独でアンインストール可能なわけだから、
そういうケースをもう少し想定すべきとは思うけど。

674:デフォルトの名無しさん
10/03/13 22:07:38
ちっ、うっせーな

675:デフォルトの名無しさん
10/03/13 23:04:13
うっ、ちっせーな

676:デフォルトの名無しさん
10/03/13 23:08:52
C++のクラスとか旧時代のゴミ持ち込むなよ

677:デフォルトの名無しさん
10/03/13 23:54:40
C#もろくに使えねぇ癖に

黙ってろカス

678:デフォルトの名無しさん
10/03/14 01:59:46
反省してまーす

679:デフォルトの名無しさん
10/03/14 02:10:53
>>617-621
クラスやそれ以上の粗さ(アセンブリなど)でよければ、
Visual Studio 2010の依存関係グラフというやつで、図にしてくれるぞ。
URLリンク(www.microsoft.com)

680:デフォルトの名無しさん
10/03/14 03:12:02
doxygenもいいぞ

681:デフォルトの名無しさん
10/03/14 07:10:37
コンボボックスのドロップダウンリスト部で右クリックが押されたことを検知するには
どうしたらいいでしょうか?
MouseClickやMouseDownで見張っていても呼ばれないようです

682:デフォルトの名無しさん
10/03/14 07:25:31
そんなマニアックなイベントは無いと思う
一番簡単そうなのはドロップダウン部分のウィンドウハンドルを
NativeWindowに食わせることかなぁ
ハンドルはGetComboBoxInfoで取れる

683:デフォルトの名無しさん
10/03/14 08:32:47
2010またソリューションとか変わるんだよな…
2008と混在できるけど、いまやってるプロジェクトまわりのやつは皆が2010に切り替えるまで2010でいじれないよね。
依存関係グラフで見たいのあるけど、なんかうまいやりかたある?


684:デフォルトの名無しさん
10/03/14 08:33:39
>>682
ドロップダウン部分をサブクラス化してメッセージを自前で処理ですか・・・
ちょっと敷居が高そうですが頑張ってみます
ありがとうございました

685:デフォルトの名無しさん
10/03/14 11:05:03
そんなアメリカンなUI、使う方にも敷居が高そうだ。

686:デフォルトの名無しさん
10/03/14 11:43:24
>>679

2010か

687:デフォルトの名無しさん
10/03/14 21:45:42
Visual C# ExpressEditionのエディタで、
半角スペースを可視化する設定はありませんか?

688:デフォルトの名無しさん
10/03/14 21:50:36
>>687
編集→詳細→スペースの表示
ショートカットはCtrl+R→Ctrl+W

689:デフォルトの名無しさん
10/03/14 22:00:28
>>688
ありがとうございます。
続いて質問ですが、半角スペースと全角スペースを区別する方法はありませんか?
見た目の幅が微妙に違うだけで、一目で判断するのは難しいのですが

690:デフォルトの名無しさん
10/03/14 22:17:13
>>689
微妙っていっても表示される点の位置がずれるのでそれで区別しかないと思う。
インデントをタブにして普段は半角スペースを入れない方が判りやすいと思うんだけどね。

691:デフォルトの名無しさん
10/03/14 22:19:48
全角が混ざったかわからないときはプロジェクトで考えるより
普通のテキストとみたてて置換した方が早くない?

692:デフォルトの名無しさん
10/03/14 22:23:42
全角を気にしないというのはどうか?

693:デフォルトの名無しさん
10/03/14 22:26:18
開発環境が何かしらないけど
スペースの可視化くらいできるだろ

694:デフォルトの名無しさん
10/03/14 22:26:58
って上に書いてあったか

695:689
10/03/14 22:36:44
皆様回答ありがとうございます。
>>690-692辺りを参考に、使い勝手を試しながら使いやすい設定を探していこうと思います。

696:デフォルトの名無しさん
10/03/14 22:43:42
まあリテラル文字列中以外は、全角スペースは勝手に半角に修正されるんですけどね
違ったっけ。

697:デフォルトの名無しさん
10/03/15 13:30:35
全角スペースも空白として扱われる、だろう

698:622
10/03/15 16:17:26
>>634
亀ですがありがとう
参考にさせてもらいます


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch