C♯, C#相談室 Part35
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/11/03(金) 03:07:45前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0486デフォルトの名無しさん
2006/11/22(水) 21:29:330487デフォルトの名無しさん
2006/11/22(水) 21:39:42GetDCしてデバコンに自前で描画すればイイだけのことでは?
0488デフォルトの名無しさん
2006/11/22(水) 21:55:17ListViewGroup ってコントロールじゃないし
ListViewのオーナー泥でアイテムのグループみて自前でやる。
0489デフォルトの名無しさん
2006/11/22(水) 22:04:150490デフォルトの名無しさん
2006/11/23(木) 10:39:26DesignMode プロパティが true にならない現象がおきます
[ToolStripItemDesignerAvailability(ToolStripItemDesignerAvailability.All)]
public class ToolStripMenuItemDerived : ToolStripMenuItem{
public ToolStripMenuItemDerived() : base(){
base.Text = "aaa";
if (base.DesignMode) return;
base.Text = "bbb";
}
}
上記の ToolStripMenuItemDerived をデザイナで貼り付けたときには
aaa と表示されずに bbb と表示されてしまいます
仕方がないので
base.Text = "aaa";
#if ! DEBUG
base.Text = "bbb";
#endif
としデザイナを使うときはコンフィギュレーションを Debug にしています
もっとスマートな方法はないものでしょうか
0491デフォルトの名無しさん
2006/11/23(木) 10:40:36ワロタw
0492デフォルトの名無しさん
2006/11/23(木) 10:49:01そんなコーディングがまず必要なのかが(ry
ttp://support.microsoft.com/kb/839202/ja
0493デフォルトの名無しさん
2006/11/23(木) 13:14:10LicenseManager.CurrentContext.UsageMode == LicenseUsageMode.Designtimeとかでうまくいかない?
0494デフォルトの名無しさん
2006/11/24(金) 12:11:230495デフォルトの名無しさん
2006/11/24(金) 12:38:220496デフォルトの名無しさん
2006/11/24(金) 12:58:310497デフォルトの名無しさん
2006/11/24(金) 14:32:01// TCPリスナーを生成する
_tcpListener = new TcpListener(ip, portnb);
// TCPリスナーを開く
_tcpListener.Start();
// 保留中の接続要求があるかどうかを確認する
if (_tcpListener.Pending() == true)
{
// クライアントからの接続要求を受け入れる
_tcpClient = _tcpListener.AcceptTcpClient();
// KeepAliveの設定
_tcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 30000);
}
上記のようにサーバー側でクライアントの接続を受け入れて
TCPにて伝文の送受信を行っています。
中継装置(HUB)を経由して接続している時、クライアントのLANケーブル
が抜けた(切断)されたことを検出する為、KeepAliveの機能を用いる
方向で実装していますが・・・検出できませんでした。
おそらくKeepAliveの使い方が悪いと思うのですが・・・どなたかご存知ないでしょうか?
0498デフォルトの名無しさん
2006/11/24(金) 15:19:150499デフォルトの名無しさん
2006/11/24(金) 18:24:14byte[] inBuffer = new byte[12];
BitConverter.GetBytes(1).CopyTo(inBuffer, 0); // スイッチ
BitConverter.GetBytes(30000).CopyTo(inBuffer, 4); // Interval
_tcpClient.Client.IOControl(IOControlCode.KeepAliveValues, inBuffer, null);
上記の方法で30秒後に切断を検出できました。
DOS窓のnetstatでもidolになりました。
0500デフォルトの名無しさん
2006/11/24(金) 18:43:360501デフォルトの名無しさん
2006/11/24(金) 18:48:33typeof(List<>).FullName: System.Collections.Generic.List`1
typeof(Dictionary<,>).FullName: System.Collections.Generic.Dictionary`2
0502デフォルトの名無しさん
2006/11/24(金) 19:20:54DataRowのインスタンスが2つあって、これらが等しいか(各列の値がすべて等しいか)
を調べるにはどうすればよいのでしょう?
DataTableに、DataRowインスタンスを追加するときに、同じ内容のものがあった場合は、
追加しない、という処理を行おうと思ってます。
0503デフォルトの名無しさん
2006/11/24(金) 20:34:430504502
2006/11/24(金) 22:02:49とりあえず、Rows[n].ItemArrayを一個一個しらべて
すべて同じだったら等しい
という方法ではできましたけど、
ItemArrayを配列として比較するとダメなんですよね。
RowとRowのオブジェクト同士を比較できる便利な関数とかってないものか。
0505デフォルトの名無しさん
2006/11/24(金) 22:13:120506デフォルトの名無しさん
2006/11/24(金) 22:15:300507デフォルトの名無しさん
2006/11/24(金) 22:25:35その、「RowとRowのオブジェクト同士を比較できる便利な関数」というのも
結局同じことをするんじゃね?
それとも、Cellの内容が変わるたびに中身を構造体にでも突っ込んで
隠しCellにGetHashCodeでハッシュもっておくとかしたら?
面倒くさそうだけど。
0508デフォルトの名無しさん
2006/11/24(金) 23:02:11Rows.AddしたときにConstraintExceptionをcatchするとか
0509デフォルトの名無しさん
2006/11/24(金) 23:11:49質問なのですが、VSで言うプロパティウインドウのようなものを作ることが出来る
コントロールなどは既にあるのでしょうか?
今やりたい事は、2列のテーブルで各プロパティを入力するんですが、
行によってコンボボックスに設定出来るようにしたいんです。
やはり自作するしかないのでしょうか?
0510デフォルトの名無しさん
2006/11/24(金) 23:13:42System.Windows.Forms.PropertyGrid
FAQ中のFAQ。適当にググって
0511デフォルトの名無しさん
2006/11/24(金) 23:17:39PGが起動してるときだけスクリーンセーバが動かないPGを作ってるんだけど
リンク先のやり方だとパスワード保護されてるとうまく動かないんです
パスワード保護の時って発行されてるメッセージって違うみたいですが
どうすればフック出来るか知りたいんですが
0512デフォルトの名無しさん
2006/11/24(金) 23:29:590513デフォルトの名無しさん
2006/11/24(金) 23:35:15レジストリの値書き換えてシェルに更新メッセージ送って、
終了時にレジストリ戻す……という荒技をどこかで見た希ガス
0514デフォルトの名無しさん
2006/11/24(金) 23:37:030515デフォルトの名無しさん
2006/11/24(金) 23:39:010516デフォルトの名無しさん
2006/11/24(金) 23:45:440517デフォルトの名無しさん
2006/11/24(金) 23:49:100518デフォルトの名無しさん
2006/11/25(土) 00:06:32おいらもこんなPG作りたくないっす
でもね・・・・。
レジストリはいじりたくないですね
APIスレに行ってみます
0519デフォルトの名無しさん
2006/11/25(土) 00:13:130520デフォルトの名無しさん
2006/11/25(土) 01:16:57sexy dynamite!
0521デフォルトの名無しさん
2006/11/25(土) 01:20:04SystemParametersInfo
で制御すれば
0522デフォルトの名無しさん
2006/11/25(土) 10:19:390523デフォルトの名無しさん
2006/11/25(土) 12:52:51あったんですか……気付きませんでしたorz
ありがとうございました!
0524デフォルトの名無しさん
2006/11/25(土) 13:24:39このたびにソース修正するのがめんどくさいなー
どうすればいいですか?
0525デフォルトの名無しさん
2006/11/25(土) 13:33:02enable/disableで使わない方を消しておけ
0526デフォルトの名無しさん
2006/11/25(土) 14:26:400527デフォルトの名無しさん
2006/11/25(土) 14:35:530528デフォルトの名無しさん
2006/11/25(土) 14:38:26計画を立ててからフォームを組むようにする。
0529デフォルトの名無しさん
2006/11/25(土) 14:52:51(DataGridView上をダブルクリックした時のイベント)
をコンテキストメニューをクリックした所から呼び出したいんだけど、
どうすればいいですか?
private void メニューをクリックToolStripMenuItem_Click(object sender, EventArgs e)
{
this.dataGridView1_CellDoubleClick(this,DataGridViewCellEventArgs.Empty);
}
とか無理やりDataGridViewCellEventArgs.Emptyを引数にとってもダメでした。
private void メニューをクリックToolStripMenuItem_Click(object sender, EventArgs e)
{
this.dataGridView1_CellDoubleClick(this,DataGridViewCellEventArgs.Empty);
}
とか無理やりDataGridViewCellEventArgs.Emptyを引数にとってもダメでした。
0530デフォルトの名無しさん
2006/11/25(土) 16:05:51亀レスだけど、
.NET製のわりと大規模なアプリ
http://www.getpaint.net/index2.html
0531デフォルトの名無しさん
2006/11/25(土) 17:17:42賢い
0532デフォルトの名無しさん
2006/11/25(土) 17:24:46そのPaint.NETはこのスレだかで知ったんだけど、
使ってみると意外といいね。
0533デフォルトの名無しさん
2006/11/25(土) 17:32:33イベントプロパティを呼び出すのは無理。
0534デフォルトの名無しさん
2006/11/25(土) 20:14:59何がダメなのか分からんが。
普通はメソッド化して両方でそれを呼ぶ
0535デフォルトの名無しさん
2006/11/25(土) 22:27:11ビミョーなアプリですね
0536デフォルトの名無しさん
2006/11/26(日) 11:47:570537デフォルトの名無しさん
2006/11/26(日) 12:54:29確かにw
0538デフォルトの名無しさん
2006/11/26(日) 13:15:280539デフォルトの名無しさん
2006/11/26(日) 13:27:33あれは失敗だったと開発者も認めているのにw
0540デフォルトの名無しさん
2006/11/26(日) 14:45:040541474
2006/11/26(日) 17:56:330542474
2006/11/26(日) 18:02:33現在、この頁を見ています。
確かに、この頁に記載されている通り、
WORD97からのアップグレードとして
WORD2003をインストールしました。
しかし、すでにアップグレードしている状態で、
このような97に関連したエラーが出ているのが
とても不思議です・・・
0543デフォルトの名無しさん
2006/11/26(日) 18:05:420544474
2006/11/26(日) 18:21:31エラーの詳細をうp致しました。
0545デフォルトの名無しさん
2006/11/26(日) 18:23:23それができるってことは次はもちろん何をうpすればいいかわかってるだろうな
0546デフォルトの名無しさん
2006/11/26(日) 18:23:33俺だけなのか?
0547デフォルトの名無しさん
2006/11/26(日) 18:24:510548デフォルトの名無しさん
2006/11/26(日) 18:29:01まだできたてほやほやの言語だし可能性はある
詳細と再現方法をテキストで作ってMSに報告するとよろし
0549デフォルトの名無しさん
2006/11/26(日) 18:30:340550デフォルトの名無しさん
2006/11/26(日) 18:35:248007007eが出てるってことは、何かがCLSIDの関連付けあたりを破壊したんだろう。
セキュリティソフトをアンインスコしてから、Officeの自動修復を試してみるとどうじゃろう。
0551474
2006/11/26(日) 18:36:35でもどうしようもない・・・
みんな、コメントありがとう!!
明日の朝までにはなおさんと!!!!
0552474
2006/11/26(日) 18:40:46コメントありがとう。
僕も、ノートンアンチウィルスのアンインストールが
原因だったと思っています。
このアンインストールの前後に、今回の不具合が発生しているので。
でも、このノートンアンチウィルスを
アンインストールした後に、
WORD2003は再インストールしましたし、
修復っていうのも何度か渡来しております。
でも、そういえば、2003をインストールする前に
予めインストールしておいた97には、
今回は、一切何もふれませんでした。
ひょっとすると、97も完全にアンインストールして
(というか、97はもうPCにないよな気がします。)
0553474
2006/11/26(日) 18:42:47というCLSIDを削除してWORD2003をアンインストールし、
又は、WORD2003をアンインストールしてから、このCLSIDを手動で削除し、
そのあとに、再度、WORD2003をインストールしなおせば直るかなぁ・・・・。
0554474
2006/11/26(日) 18:45:24のCLSIDは、↓このようになっております。(一応、うpしてみました。)
http://kasarfa.com/modules/php/bbs/ubbs/image/1164534281.gif
0555474
2006/11/26(日) 18:46:21レスありがとうございます。
えっと、次は何をうpすればよろしいでしょうか。
0556デフォルトの名無しさん
2006/11/26(日) 18:46:340557デフォルトの名無しさん
2006/11/26(日) 18:46:53聞く前に試せよ
0558474
2006/11/26(日) 18:50:34いま、試しています。
WORD2003を完全アンインストールしました。
0559474
2006/11/26(日) 18:51:26WORD2003をアンインストールしたら
このCLSIDは、併せて削除されていました。
0560474
2006/11/26(日) 18:52:52このフォルダにあるテンプレートもバックアップした上で削除しておきました。
それでは、改めてインストールしてみます。
暖かいご支援、ありがとうございmす。
0561デフォルトの名無しさん
2006/11/26(日) 19:51:330562デフォルトの名無しさん
2006/11/26(日) 20:03:000563デフォルトの名無しさん
2006/11/26(日) 20:55:22答えてるっつーかからかってるように見える
0564デフォルトの名無しさん
2006/11/26(日) 22:13:23Dispose()でいいんですか?
Disposeした後にそのインスタンスのプロパティに普通にアクセスできるし変更できて
解放されていないようなんですけど。
Disposeした後、解放のタイミングはCLRにおまかせで、
今すぐメモリ解放ということは不可能なんですか?
0565デフォルトの名無しさん
2006/11/26(日) 22:16:43>解放されていないようなんですけど
そういうことはやめましょう。
null代入してほっとけばGCされるのでほっとけ。
0566デフォルトの名無しさん
2006/11/26(日) 22:18:41お前C++使いだな
ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/
0567デフォルトの名無しさん
2006/11/26(日) 22:25:18http://www.atmarkit.co.jp/fdotnet/dotnettips/027dispose/dispose.html
0568474
2006/11/26(日) 22:41:420569デフォルトの名無しさん
2006/11/26(日) 22:45:08メモリ使用量が減っていないのでまだ残ってんじゃないの?と思い
ためしにやってみました。null代入した後だと流石にあとかたもなくなってますね。
メモリ解放はdisposeと同様に即座にはされないようですけど。
>>566
いや、C#君ですよ。低レベルすぎてスレ違い?
>>567
よんだけどそれ回答になってないでしょ。
ずばり、インスタンスが使用しているメモリ空間を即解放するにはどうすれば良いか?
という問いの答えは、マネージドコードでは不可能 なんですかね。
0570デフォルトの名無しさん
2006/11/26(日) 22:47:26nullを代入することに何の意味があるんだ?
0571デフォルトの名無しさん
2006/11/26(日) 22:48:39んなこといってるからC++使いだって言われるんじゃよー
> マネージドコードでは不可能
GC対象メモリであれば強制GCを呼べばいいよ。System.GCだっけ。
でも実際に行われるかどうかは知らない。
メモリ使用量がタスクマネージャのそれだとすれば、不可能だねえ。
ヒープはすぐにコンパクト化されるわけではないし。
0572デフォルトの名無しさん
2006/11/26(日) 22:50:250573デフォルトの名無しさん
2006/11/26(日) 22:50:350574デフォルトの名無しさん
2006/11/26(日) 22:59:06Disposeとメモリ解放は全く関係ありません。
Disposeが解放するのはアンマネージドリソースです。
0575デフォルトの名無しさん
2006/11/26(日) 23:00:37GCは確保したオブジェクトが、どこかから参照されているかどうかで
GC対象かどうか判断してるんじゃなかったっけ?
null代入して参照数をゼロにしないと、プログラム終了まで
インスタンスメモリは確保されっぱなしの可能性がある。
0576デフォルトの名無しさん
2006/11/26(日) 23:02:35>それが単なるメモリ領域なら、使用可能なメモリ容量に余裕がある限り、
>回収されずに放置されるケースがあってもそれほど問題とはならない
0577474
2006/11/26(日) 23:03:280578デフォルトの名無しさん
2006/11/26(日) 23:04:35スコープってしってる?
0579デフォルトの名無しさん
2006/11/26(日) 23:05:24ぐだぐだやってないでOSからクリーンインスコしろ
0580デフォルトの名無しさん
2006/11/26(日) 23:06:02一般的には、弱参照以外の参照を切ってGC.CollectでGC発動
させれば回収される。
Finalizer持っていてかつ、SupressFinalizeされていなければ、
さらにFinalizerの終了を待って、GC.Collectで回収。
ただ、この行為はともにスループットをほぼ確実に落とす。
もっといえば、2.0だとさらに複雑になっていて「正確に」こんな
ところで説明するのは長すぎるかも。「即開放は不可能」というより、
システム側にその権利は譲った(そして最適化の余地を作った)が
正しい。
0581474
2006/11/26(日) 23:07:240582デフォルトの名無しさん
2006/11/26(日) 23:09:44スコープから外れない場合があることを忘れずに…
form
0583デフォルトの名無しさん
2006/11/26(日) 23:14:09vbsとかからはCreateObjectできんの?
0584デフォルトの名無しさん
2006/11/26(日) 23:15:53スルーします。
0585デフォルトの名無しさん
2006/11/26(日) 23:16:22ttp://etc4.2ch.net/test/read.cgi/male/1156204826/
■ このスレッドは過去ログ倉庫に格納されています