[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/28 05:52 / Filesize : 155 KB / Number-of Response : 699
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part55



1 名前:デフォルトの名無しさん [2010/02/04(木) 20:32:55 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとC#,C♯,C#(初心者用) Part54
pc12.2ch.net/test/read.cgi/tech/1264236247/

関連スレ
C#, C♯, C#相談室 Part55(実質56)
pc12.2ch.net/test/read.cgi/tech/1260111240/

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
pc12.2ch.net/test/read.cgi/tech/1261879110/

357 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 15:44:13 ]
ム板の花だから

358 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 15:56:06 ]
>>353
回答したら、幇助になる可能性はあるけどな。

359 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:01:31 ]
動的に生成したPanelにラベルやらピクチャーボックスやらを載せているんですが、
panel.MouseClick += panelClick;
とした場合には、パネル上の他のコンポーネント(ラベルやらピクチャーボックス)
がクリックされた場合は反応しませんよね。
上に載っているラベルとかも含めてパネルがクリックされたら反応させるってことできませんか?

360 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:02:40 ]
そっちのイベントをPanelのイベントに関連づければいい。

361 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:03:08 ]
鳥つけるのもいいけど、ここをよく利用する人にとっても面倒だしなあ
ましてや2ch利用者の多くはテンプレ読まないの多いのにそんなルール
作っても・・・とか思うわ

IDつけてくれとかどこかに要望だしてやってくれるのかな?

362 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:04:12 ]
>>359
panelってむき出しになってる部分あるの?

363 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:05:12 ]
>>360
関連付けってなんです?
panel.MouseClick += panelClick;
label.MouseClick += panelClick;
pictureBox.panelClick += panelClick;
みたいなことをしろってことですか?

364 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:06:58 ]
>>363
うん。

365 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:07:04 ]
>>362
あります
パネルの部分をクリックすると反応します

>>363
panel.MouseClick += panelClick;
label.MouseClick += panelClick;
pictureBox.MouseClick += panelClick;
でした



366 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:09:08 ]
>>364
わかりました、そうします
ありがとうございました

367 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:09:34 ]
>>365
デザイナーが用意するイベント処理関数はいかにも・・という名前付くけど
実際のところは共通の処理にしても問題ないよ
ただそうなると実際どのコントロールでイベントが発生したかわからなくなるので
コントロールのNameで工夫するかTagがあいてるので識別に使うとかすれば
いけるでないの?

368 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:27:32 ]
>>367
こういうときはその方法(NameかTagで区別する)が定石なんですか?

private void panelClick(object sender, MouseEventArgs e)
という関数で
sender instanceof Panel
ってやれるといいんですがinstanceofないんですね
sender.GetType().ToString() == "System.Windows.Forms.Panel"だといけそうですが
ちょっと冗長ですよね

369 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:31:07 ]
as

370 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:36:47 ]
>>368
上にでてる
>panel.MouseClick += panelClick;
>label.MouseClick += panelClick;
>pictureBox.MouseClick += panelClick;
こういう共通関数で処理する場合
object senderで送られてくるのはpanelだけじゃなくなってるので
どこかで識別しないとたぶんキャストでこけるよ

panel.MouseClick += panelClick;
panel.Tag = 1;

label.MouseClick += panelClick;
label.Tag = 2;

pictureBox.MouseClick += panelClick;
pictureBox.Tag = 3;

といった感じで識別コードでも用意して

int ControlCode = (int)sender.Tag;

371 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:41:36 ]
>>370
一部訂正

private void panelClick(object sender, MouseEventArgs e)
{
    int ControlCode = (int)sender.Tag;
//どのコントロールから来たか判断

    //instanceofの代わりにキャストすればいい
    Panel panel = (Panel)sender;
}
それかイベントハンドラの入り口だけはきっちりわけちゃって

そこから共通の処理関数を呼び出すとか
private void panelClick(object sender, MouseEventArgs e)
{
  Panel panel = (Panel)sender;
  commonfunc(panel.hoge1,panel.hoge2);
}
//labelやpictureBoxも同じようにする

372 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:44:57 ]
>>370-371
Tag使ったほうが比較も早そうですね
ありがとうございます

373 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:47:46 ]
>>372
Tagはobjectなんでなんでもぶら下がるからいいよ〜

374 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:48:09 ]
TagなんてVB6かよ・・・

375 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 16:52:28 ]
>>374
グローバルでフラグ持ったりするよりはいいんでないの?
他にコントロール間の関連付けとかいい方法あったっけ?



376 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 17:12:32 ]
そもそも、まとめてやりたいはずだったのに、わざわざ区別するのもわからん。
それなら、別のイベントプロシージャでやればいいんじゃね?

で、わざわざTagなんぞ使わなくても、is なり == なりで判定すればいいだけ。

377 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 17:12:40 ]
>>374
C#って過去の言語の寄せ集めみたいな設計だから
Java臭がしてVB6.0臭がするC/C++ぽい言語ってところだよ

378 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 17:45:34 ]
それ言い始めたら代入文(=)って全てFORTRAN臭がするってことになるしな。
「・・・かよ」は罵倒にすらならないね。

379 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 17:48:02 ]
キチガイが来ました−。

380 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 18:51:25 ]
お前のDNAから猿臭がする

381 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 19:44:39 ]
MemoryStream ms = new MemoryStream();
XmlTextWriter xtw = new XmlTextWriter(ms, Encoding.UTF8);

xtw.WriteStartDocument();
xtw.Formatting = System.Xml.Formatting.Indented;
xtw.WriteStartElement("HAGE");
xtw.WriteElementString("HOGE","HOGE");
xtw.WriteEndElement();
xtw.WriteEndDocument();

で、msにXMLを書き込めると思ったら書き込めないんです
何か間違ってるんでしょうか・・・。

382 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 19:48:17 ]
XmlWriterをClose/Flushしてない

383 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 19:54:27 ]
Tagは便利だけど、これはどうなんだ?って思いながら使ってる。
もっとスマートな方法ないのかね。

384 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:01:22 ]
Dictionaryなり使って外から管理する手もある

385 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:03:16 ]
>>383
ないんじゃね?
2ch専ブラのスレ覧のタブ部分とListViewの連動とか
スレッドのタブ部分とブラウザー部分の連動はTag使った方が
スマートにかけるし、動的生成でとちらない限りはバグを仕込まないしねえ



386 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:04:22 ]
>2ch専ブラのスレ覧のタブ部分とListViewの連動とか
>スレッドのタブ部分とブラウザー部分の連動はTag使った方が
>スマートにかけるし、動的生成でとちらない限りはバグを仕込まないしねえ
これは割りと見慣れてるGUIの実装の例ってことで・・

387 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:19:07 ]
専ブラの例なら、データ構造内に持つのが素直じゃね?

388 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:28:26 ]
>>387
内部構造は別途持つよ
最終的なそれぞれのリンクの話

目印つけたりして判断ロジック入れるのもいいけど
動的にオブジェクト作るときは関連については全部
わかってるんだから、イベント受けた側で条件式使
わないで何をすればいいかわかるようにすればいい


controls.Addでの関連(表示だけの関連)
上panel <-Button
下panel <-ListView

Button.Tag
└ListView.Tag
  └内部のデータ構造への関連

ListView
└ListViewItem.Tag
  └内部のデータ構造への関連

内部のデータ構造
・・・・

こうすればキャスト数回ですぐに処理可能になる

389 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:49:05 ]
ごめん。全然意味がわからん。

390 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 20:51:44 ]
俺は28%ぐらい理解した

391 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 21:01:19 ]
そもそも動的にパネルを生成するのはいいとして、その上のコントロールまで
動的に生成する、などという泥臭いやり方に問題があると思うんだけどね。

上にのっけるコントロールの種類や配置を状況によって変える必要がある、
とかでなければ、UerControlを使うべきじゃないのか。

392 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 21:41:59 ]
Tag使うくらいならIExtenderProvider


393 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 22:14:10 ]
>>392
やるじゃん

394 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:13:44 ]
TcpListenerが気がついたら破棄されてるんですが何ででしょう・・・orz
変数としてはずっと保持してるはずなんですが・・・意味がわからん

395 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:20:23 ]
変なことしてるからだろう



396 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:21:59 ]
設定画面用のフォームを作成してXMLファイルから設定を読み込み。
メニューから設定画面を呼び出すと1度目は表示されるのですが2度目からは破棄されたオブジェクトとなってしまいます。
FormをClose()しているのですがClose()すると破棄されてしまうんでしょうか?

397 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:25:37 ]
フォームが閉じると、オブジェクト内で作成されたすべてのリソースが閉じ、フォームが破棄されます。

398 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:25:39 ]
うん。

399 名前:デフォルトの名無しさん mailto:sage [2010/02/21(日) 23:36:28 ]
ああ・・・そうだったんですね・・・orz

1から作り直してきます

400 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:33:34 ]
モードレスならHideでも行けるぜ


401 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:40:15 ]
C#って画像を任意の三角形で切り抜いて表示とかできる?

402 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:44:31 ]
できる

403 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 00:45:17 ]
unsafe使わないと遅い

404 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 01:15:28 ]
例えば単にClip領域を設定して描画するだけの話で、そう遅いとも思えんけどね。

405 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 03:54:01 ]
>>391
まあサンプルが2ch専ブラの話だしねえ
既存の2ch専ブラを模倣するとそういう実装になるってことじゃないの?



406 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 08:44:15 ]
//  Form: DoubleBuffered = true
 private void Form1_Resize(object sender, EventArgs e) { this.Invalidate(); }
 Image im = Properties.Resources.画像;
 FontFamily fontf = new FontFamily("Times New Roman");
 StringFormat stringf = new StringFormat();
 private void Form1_Paint(object sender, PaintEventArgs e) {
  Graphics g = e.Graphics;
  using (GraphicsPath path = new GraphicsPath())
  using (Brush ib = new TextureBrush(im)) {
   path.AddPolygon(new[] { new Point(200, 50), new Point(50, 250), new Point(250, 250) });
   path.AddString("Drawing", fontf, (int)FontStyle.Bold, 72, new Point(0, 0), stringf);
   float sc = this.ClientSize.Width / 300.0f;
   path.Transform(new Matrix(sc, 0, 0, sc, 0, 0));
   g.SmoothingMode = SmoothingMode.AntiAlias;
   g.Clear(Color.Black);
   g.FillPath(ib, path);
 }}


407 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 09:05:55 ]
>>406
そのコードは何をしたいんだ

408 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 09:11:51 ]
>>401への回答だろ。流れ的に

409 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:31:07 ]
>>406
アンカーくらいつけろよ、くちべた君(笑)

410 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:58:37 ]
必死に考えて、ケチつける所が「アンカー付いてない」だけなんてwww

411 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:11:54 ]
しかも「くちべた君」w

412 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:16:59 ]
C##

413 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:27:08 ]
>>401-408で何事か起きたわけでもないのに>>409でなぜ罵倒に至ったのか…

414 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 13:19:07 ]
>>406
やってみたらできました
ありがとうございます

415 名前:デフォルトの名無しさん [2010/02/22(月) 16:01:42 ]
C#初心者です。
以下のようにタイマー割り込みが来るたびに
newでインスタンスを上書きするような記述はおかしいでしょうか?
なんかどんどん処理が重くなってる気がするんですが・・・
原因がここじゃないかと思って質問しました。
よろしくお願いします。

class hoge1
{
public hoge1(int i)
{
//コンストラクタ
}
}

class hoge2
{
timer割り込み()
{
myHoge1 = new hoge1(i);
i++;
}

hoge1 myHoge1;
int i=0;
}



416 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:04:24 ]
>>415
そのnewをやめて軽くなるならそれが原因じゃね?

417 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:15:00 ]
DisposeやFinalizeがあるクラスでなければ、
ほとんど問題にならないと思うよ。

418 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:17:40 ]
何がどれぐらい重くなるのかも調べずに「気がする」って言われてもなぁ

419 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:17:49 ]
ほとんど問題にならないと思うよね。

420 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:01:54 ]
問題は毎回 new する必要が本当にあるのかどうか

421 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 18:02:57 ]
普通に考えると、この程度で体感できるほど重くなる筈がない。
勘違いか見当違いの所探してるだけだろ。

422 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 18:33:36 ]
へえ

423 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 18:35:44 ]
別の場所かコード端折ったとこに原因があるか

424 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 19:11:50 ]
newしてるクラスがかなり小さく、かつ内部でアンマネージ捕まえてたりすると重くなるかも

425 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 20:41:19 ]
たしかに



426 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:41:00 ]
適当に重くなったときにCGに強制回収させてみて、それっから処理が軽くなったら・・・とかで調べてみるとか

427 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 05:18:54 ]
>>408
>>406だけ見ると>>401が試行錯誤してコード書いたけどうまくいかなくて質問
来た様にも見えるしなあ

結論とすれば>>409のいうことだよ

428 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 07:22:45 ]
くちべた君(笑) これははやるかもしれん

429 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 19:21:55 ]
某フォーラムで提供されているライブラリー(mmf.codeplex.com/releases/view/40043)を使って、
メモリーマップドファイル版のListのジェネリッククラスを作った。
www6.atpages.jp/~autonomydoll/object/files/VaribleList.zip
15MBのテキストファイルで実験したら、31MBぐらいディスクスペースを消費して、プロセスのワーキングセットが80MBを超えた。
おまけに、読み終わるまで3分近くかかって、使い物にならない。
構築がこれよりも早いデーター構造はない?

430 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 19:28:28 ]
CLRでファイルマッピングがサポートされるのはV4からだっけ?
どういう構造のライブラリーか知らないが、普通にP/InvokeでファイルマップのAPIを使うと、
ネイティブのViewからマネージドメモリへマーシャリングが起きると思うんだけど。

431 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 19:44:04 ]
SQL Server Compact Editionでも使えばと言いたくなるのだけれど

432 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:32:17 ]
自宅でgoogleで「C#」で検索してもCしかかからないんだけど
会社で検索するとちゃんと出る…
なんか設定とかあるのかねこれ

433 名前:デフォルトの名無しさん mailto:sage [2010/02/24(水) 23:43:30 ]
アドレスバーにq=C%23って出てるか?

434 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 00:37:45 ]
他のキーワードとあわせてC#検索したらその後からC#単独で検索しても
引っかかるようになった。
どんなロジックなんだgoogle…

>>433
出てるよー

435 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:50:33 ]
FILE_ATTRIBUTE_TEMPORARY指定の一時ファイルを使って、
擬似MemoryStreamを作ったことならある。




436 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 01:55:40 ]
>>429
よく見てないがそれ以前にシリアライザなんか使ったら遅いに決まってる。


437 名前:デフォルトの名無しさん mailto:sage [2010/02/25(木) 12:50:48 ]
>>434
普通に前回までの検索結果が反映されてただけじゃないの?

438 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 22:31:57 ]
>>430
P/Invokeってそんなにコストがかかるの?
ライブラリーのソースを調べたら、思いっきり使いまくってるんだが・・・

439 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 22:41:59 ]
P/Invokeのセキュリティチェックと、場合によってマーシャリングはそれなりにコストはかかるが、
メモリマップした後の単なるポインタアクセスじゃそんなの関係ないからそう影響はない。
もちろん、例えばタイトなループ内でP/Invokeを繰り返したら影響はでかい。
それとは別に、カーネルモードへの移行が必要となるようなAPIでは、
P/Invokeとは関係なくかなり負荷が高い。
カーネルオブジェクトの操作する場合など。


440 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 22:44:20 ]
セキュリティチェックを省いたり、bittableなやり取りだけになるように工夫すれば、大した負荷はない。


441 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 22:44:23 ]
メモリーマップドファイルて普通の業務アプリ使ってて何に使うのかぱっとおもいつかん・・
DBとかだと有効かもしれんが普通DB使うだろうし・・・
ん〜・・・
だれかおいしい使い道教えてくれ

442 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:16:01 ]
>>441
エディターの類。
巨大なファイルもファイルマッピングで編集すると、効率がいいらしい。

443 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:34:08 ]
巨大なファイル使う時ぐらいでしょ。
業務アプリでは考える必要ないと思う。

444 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:34:25 ]
プロセス間である程度大きいデータを共有したいときとか。
で、かつ、ファイルやDBとか使えないときに使ったことがある。

445 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:48:51 ]
どなたかDelphi使いでC#に乗り換えた方いますか?

DelphiでのTGraphicControlみたいに簡単にグラフィック系のコンポーネントを作るには
C#だとなんてクラスを使うんですかね?

C#でメータとかグラフとかのコンポーネントを作りたいんだけど・・・





446 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:50:51 ]
WPFつかえばらくちんぽんで出来るYO!

447 名前:デフォルトの名無しさん mailto:sage [2010/02/26(金) 23:53:45 ]
Controlから直接派生してOnPaintをオーバーライド
まあWPF使えばコード一行も書かずに何でも描けるけどね

448 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 00:01:16 ]
あら、即効で・・・

WPFですか。
ちょっと勉強してきます。

ありがとうございます。


449 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 00:23:36 ]
>>442-444
サンクス
なるほど・・・勉強になった


450 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 01:13:25 ]
SqlCommandにパラメータ付のSQL文を設定した場合、プロファイラでトレースすると
exec sp_executesql N'SELECT * FROM TAB WHERE COL = @VAL',N'@VAL char(1)',@VAL='a'
上記のような文字列(上記は例)が取得できます。
この文字列をプログラム上からログに落としたいと思っています。
どうにかして文字列を取得することはできないでしょうか?
SqlCommandのパブリックなメンバでは取得できないので
リフレクションとか使えば取得できるかと思ったのですが、
この文字列を保持しているプライベートなプロパティが見つかりませんでした。

451 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 02:14:01 ]
むしろSQLクライアントでログ取ればいんじゃね?
少なくともOracleのにはあったハズ

452 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 08:56:17 ]
パケットキャプチャすればいいよ

453 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 11:43:51 ]
俺はparametersを自力で展開してたけど、いいやり方あるのかな
Nullの扱いと’のエスケープをちゃんとすればログのSQLをコピペして使えたけどどうなんだろう

454 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 13:29:17 ]
オレもいい案があれば知りたい

455 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 18:57:02 ]

bool createPanel(){
  ...
  bodyLabel.Text = "テスト";
  bodyLabel.Width = this.Width - 20;
  bodyLabel.BorderStyle = BorderStyle.FixedSingle;
  ...
  panel.Controls.Add(bodyLabel);
  return panel;
}

こういう関数を繰り返し呼び出して、
出来たパネルを、別のメインとなるパネルに縦に並べていっているんですが、

メインパネルのサイズ以上に並べたあたりから(メインパネルはAutoScrollをtrueにしてあります)
bodyLabelの見た目の長さが違ってくるんですが、なぜでしょう?

見た目としては↓みたいな感じです。

[テスト ]
[テスト ]
[テスト  ]
[テスト  ]
[テスト  ]

デバッガで止めてみると、bodyLabel.Widthの値自体は同じものでした。



456 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 19:41:08 ]
きちんと切り抜きして出直し。
boolのControlsプロパティにAdd?
問題はpanelの方だろさ。

457 名前:デフォルトの名無しさん mailto:sage [2010/02/27(土) 19:51:39 ]
>>456
すいません

bool createPanel(){
  Panel panel = new Panel();
  Label bodyLabel = new Label();
  ...
  bodyLabel.Text = "テスト";
  bodyLabel.Width = this.Width - 20;
  bodyLabel.BorderStyle = BorderStyle.FixedSingle;
  ...
  panel.Controls.Add(bodyLabel);
  return panel;
}
パネルとパネル上のラベルは関数内で生成してます。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<155KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef