1 名前:デフォルトの名無しさん [03/10/04 01:02] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。 前スレッドはこちら pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4) pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3) pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2) pc2.2ch.net/test/read.cgi/tech/1023766485/l50
307 名前:デフォルトの名無しさん mailto:sage [04/08/26 12:13] >>306 ちゃんと読んではいないけどGoogleのイメージ検索で引っかかったこれはどうだろう。 ttp://www.codeproject.com/cs/combobox/resizablelistbox.asp //私ならListViewを使うかな……?
308 名前:デフォルトの名無しさん mailto:sage [04/08/26 12:18] ぶっちゃけ自分で描画したほうが早い
309 名前:デフォルトの名無しさん mailto:sage [04/08/26 14:53] >>308 めんどくさくね?
310 名前:デフォルトの名無しさん mailto:sage [04/08/27 00:14] 面倒くさいかどうかというのは実装の早さに関して考慮することじゃないような
311 名前:304 mailto:sage [04/08/27 00:43] >>305 そうか。 コピーするときにcloneがいるかとか 遅くなるのかとか、結構気になるんだが
312 名前:デフォルトの名無しさん mailto:sage [04/08/27 03:39] チューンナップなぞ遅さが気になってからすればいいんですよ. 早過ぎる最適化は諸悪の(少なくとも大半の悪の)根源なり -- DEK
313 名前:デフォルトの名無しさん [04/08/27 17:15] AxWebBrowser って ToolTip くっつけられないんだっけ?
314 名前:313 mailto:sage [04/08/27 17:16] くだらない質問なのにあげちゃった_| ̄|○
315 名前:デフォルトの名無しさん mailto:sage [04/08/27 20:34] >>305 boxing と unboxing でドツボにはまるぞ。 値型と参照型の違いは押さえておいた方が良い。
316 名前:デフォルトの名無しさん mailto:sage [04/08/27 21:08] だよね。 struct を lock () して排他したつもり、とか。
317 名前:デフォルトの名無しさん mailto:sage [04/08/27 23:58] 心配しなくてもできねーよ。
318 名前:デフォルトの名無しさん mailto:sage [04/08/28 22:43] テキストボックスで HOME や END、あまつさえ SHIFT+HOME や SHIFT+END、 CTRL+Z や CTRL+C/V/X を実現するには自分でコードを書かないといけないのでしょうか?
319 名前:デフォルトの名無しさん mailto:sage [04/08/28 22:47] >>318 まず試せ。
320 名前:デフォルトの名無しさん [04/08/28 23:16] Windows.Formにプロパティを加えたんだけど、 デザイナのプロパティウィンドウには表示されませんね。 基底クラス(Windows.Form)に加えたプロパティは 派生クラス(Windows.Form)のデザイナに反映される みたいだけど、自分自身ならなぜだめなのかなぁ。
321 名前:デフォルトの名無しさん mailto:sage [04/08/28 23:51] >>320 まったく同じレスをどこかで見たなぁ。
322 名前:デフォルトの名無しさん mailto:sage [04/08/29 12:53] >>321 俺も見た記憶があるので探してみた pc5.2ch.net/test/read.cgi/tech/1045307942/294
323 名前:306 mailto:sage [04/08/29 14:08] >>307 ,308 遅ればせながら・・・ ListViewでいけました。 ありがとうございました。 詳細表示なんてさっぱり思い浮かびませんでした。
324 名前:318 mailto:sage [04/08/29 14:41] >>319 できました…。幻覚でも見ていたのかもしれません。 でも CTRL+A ってできないんですね。
325 名前:デフォルトの名無しさん [04/08/30 17:43] 1pxの点 . を任意の座標表示するにはどうしたら良いんでしょう? 1,1 - 1,2まで幅1の線を引くと、どうも2pxくらい線が引かれちゃうし 1,1 - 1,1にすると線ができないんです。
326 名前:デフォルトの名無しさん mailto:sage [04/08/30 18:05] >>325 Bitmap に SetPixel で点を描いて、Graphics.DrawImage で画面に描写。
327 名前:デフォルトの名無しさん mailto:sage [04/08/30 18:13] 他には、 FillRectangle(DrawRectangleは不可)で幅・高さ1の四角を描画。 Graphics.GetHwndで取得したデバイスコンテキストにWin32APIのSetPixelで描画。 ……元画像のビットマップを取得できるならBitmap.SetPixelが一番手っ取り早い/速いんだけどねー。
328 名前:デフォルトの名無しさん mailto:sage [04/08/30 19:13] それ俺も気になって調べたんだけど 点を描画するGraphicsクラスのメソッドはないみたいなんだよね 結局SetPixelで妥協したけど、 Graphicsオブジェクトを使って描画を行うというルールから離れるからあんまりやりたくない
329 名前:デフォルトの名無しさん mailto:sage [04/08/30 19:18] ……327のGetHwndはGetHdcの間違い。 //user32.dllのAPIをまとめたクラスを最近作ってるからhwndまみれでつい。
330 名前:デフォルトの名無しさん mailto:sage [04/08/31 00:59] >>328 Graphics はベクタ形式を含む一般的なグラフィックを扱うクラスだから、“点”という概念がないのよね。 数学的には、点は半径が無限小の円と等価な存在で、半径0の円は画面に表示できないから。 点、というか、ピクセル単位の処理がしたければビットマップを使えと。 Graphics に元画像のビットマップを取得するメソッドがないのは、 将来的に(Avalon で)、OS 自体をベクタ画像ベースで動くものにするつもりでいるからじゃないかな。
331 名前:デフォルトの名無しさん mailto:sage [04/09/05 13:36] >>330 目から鱗
332 名前:デフォルトの名無しさん [04/09/08 21:18] www.atmarkit.co.jp/fdotnet/basics/adonet01/adonet01_01.html の記事をみてSQL Server 2000を使ってみようと思い立ったんですが、 とりあえず www.microsoft.com/japan/sql/evaluation/trial/2000/ をインストールして みたのですが、ヘルプをみても使い方がサッパリ分りません。 インストールするとタスクトレイにDBのアイコンがでますが、これのサービスをスタートしようとすると エラー1069(ログオンに失敗したため、サービスを開始できませんでした)となってしまいます。 これってまず何をすればいいんでしょうか?
333 名前:デフォルトの名無しさん mailto:sage [04/09/09 01:51] はじめまして。 mobiquitous.com/programming/ietoolbar.html これを使って、IEツールバーのボタンが押されたらあるページがIEに表示されるように したいのですが、どうすればIEを操作できるのか見当がつきません。 何か関連ありそうなキーワードがあれば教えてください。よろしくお願いします。
334 名前:デフォルトの名無しさん mailto:sage [04/09/09 12:55] >>333 Site もしくは Site の IServiceProvider 経由で IID_IWebBrowser もしくはIID_IWebBrowserAppを 得て Navigate すればいいんじゃない?
335 名前:333 mailto:sage [04/09/09 22:37] >>334 ありがとうございます。 調べてみます。
336 名前:デフォルトの名無しさん mailto:sage [04/09/10 16:44:32] アプリケーションをフォームが非表示の状態で開始するにはどうやればいいか教えていただけますか? Application.Run の前に CreateControl して Hide して、Visible を false にしてもなぜか表示されてしまいます・・・
337 名前:デフォルトの名無しさん mailto:sage [04/09/10 17:01:55] >>336 ttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtsksettingformtobeinvisibleatitsinception.asp 個人的にはApplication.Run()でやることが多いけど。
338 名前:デフォルトの名無しさん mailto:sage [04/09/10 21:30:59] >>337 これだと確かに表示はされないけれども、Load イベントも上がらないし・・・ 普通の Win32 アプリでいう WS_VISIBLE でない状態でウィンドウそのものは作りたい、 というような状況なのです。CreateSuruct でも override してみるかなぁ。
339 名前:デフォルトの名無しさん mailto:sage [04/09/10 21:56:22] CreateParams を override して WS_VISIBLE を落としてもダメ、 Form の Load イベントで this.Hide() しても this.Visible = false; してもダメ、 Application.Run を Form.ShowDialog にしてもダメ。 (関係ないけどRun の代わりに ShowDialog 使うと Dialog 終了後のメッセージが処理されないので 表示した NotifyIcon を Form が Close される前に消さないとゴミが残る・・・) VisibleChanged イベントのハンドラで Hide すると何とか消えるけど、一瞬表示されるのでちらつきます。 タスクトレイにいきなり常駐するユーティリティとかどうやってみんな作ってるんだろう。
340 名前:デフォルトの名無しさん mailto:sage [04/09/10 22:03:18] >>339 > タスクトレイにいきなり常駐するユーティリティとかどうやってみんな作ってるんだろう。 NotifyIconとかを管理するクラスを作り、その中のContextMenuでフォームのShow/Hideを扱う。 メッセージループはApplication.Run()でメインウィンドウを持たせずに開始する。
341 名前:デフォルトの名無しさん mailto:sage [04/09/10 22:46:49] >>340 できました!ありがとうございます。
342 名前:デフォルトの名無しさん [04/09/17 11:41:58] パフォーマンスを計るのにスレッド単位でCPUのTickTimeを取得したいのですが、 (Sleep中または別スレッドが走っている時はカウントしない) そういうクラス知っている人いますか?
343 名前:デフォルトの名無しさん [04/09/17 11:48:25] Type.InvokeMemberからBindingFlags.GetPropertyでプロパティを取得する時、 返り値がobject配列なのですが、どうすれば各要素にアクセス可能になるでしょうか。 単に返り値をobjectとして取得することはできたのですが、その後が分かりません・・
344 名前:デフォルトの名無しさん mailto:sage [04/09/17 11:50:48] >>343 言ってる意味がよくわからない。 もうちょっと具体的に。
345 名前:デフォルトの名無しさん mailto:sage [04/09/17 12:07:17] ごめんなさい、分かっちゃった。 こうしたかっただけです。 obj = type.InvokeMember("array", BindingFlags.GetProperty, null, doc, new object[] {2}); * これで二番目の要素をゲット お騒がせしました。
346 名前:デフォルトの名無しさん [04/09/17 14:41:43] bmp=new Bitmap(filename); これをdisposeせずに、また bmp=new Bitmap(filename2); を呼び出したらメモリー減って行きますか? それとも、同じ変数のメモリー番地に上書きされるだけですか?
347 名前:デフォルトの名無しさん mailto:sage [04/09/17 14:45:31] >>346 もちろん新しいメモリが確保される。 インスタンスのサイズが違うかも知れないのに上書きしちゃまずいだろ。
348 名前:デフォルトの名無しさん mailto:sage [04/09/17 14:47:10] って、参照先じゃなくて変数そのもののアドレスか? それなら上書きされるが。 つかそんなことに頭を悩ます意味は全くないが。 あとそれとDisposeとは何の関係もない。
349 名前:デフォルトの名無しさん [04/09/17 14:58:36] bmpの中にある画像データを替えたかっただけなんです。 >って、参照先じゃなくて変数そのもののアドレスか? >それなら上書きされるが。 という事は、前の画像データが消えて新しい画像データに上書きされるって事ですよね?
350 名前:デフォルトの名無しさん mailto:sage [04/09/17 15:08:05] > という事は、前の画像データが消えて新しい画像データに上書きされるって事ですよね? 画像データとか言わずBitmapインスタンスと言おうな、こういう場合。 まあ、そんな感じ。 細かく言うなら、「変数が示す参照先が書き変わる」。 変数が、古いインスタンスを丸めてポイして、新しいインスタンスにべったりくっつくわけだ。 //丸めてポイされたインスタンスはいずれGCが片づける。
351 名前:346 mailto:sage [04/09/17 15:10:47] なるほど、色々ありがd。
352 名前:デフォルトの名無しさん mailto:sage [04/09/17 15:16:45] >>346 微妙に誤解してないか? >>350 の書いてる内容は間違っちゃいないんだけど、 読み方によっては>>346 が誤解してしまうように思う。 依然 >という事は、前の画像データが消えて新しい画像データに上書きされるって事ですよね? のように言ってるからね… まあ画像データが上書きされるってのを、プログラム上からはというか、 プログラムでの操作上はそのように見えるってだけの意味で言ってるのなら大丈夫かもしれんが…
353 名前:デフォルトの名無しさん mailto:sage [04/09/17 21:16:06] >>346 上書きはされないよ。例えば、 Bitmap bmp = Bitmap(file1); aForm.BackgroundImage = bmp; なんてしておいて、後で bmp = Bitmap(file2) なんてやってもフォームの背景は変わらない。 前の画像は前の画像、新しい画像は新しい画像、お互いなんの関係もない。
354 名前:デフォルトの名無しさん mailto:sage [04/09/17 21:48:51] プロパティに設定するときはインスタンスのコピーをとってるんだろうか
355 名前:デフォルトの名無しさん mailto:sage [04/09/17 22:26:56] >>354 とってないよ。だから Dispose なんかしちゃだめだよ。
356 名前:デフォルトの名無しさん mailto:sage [04/09/17 23:38:22] Disposeは微妙な存在。
357 名前:デフォルトの名無しさん [04/09/18 10:40:22] >>342 の続きなんですが、スレッドがSleep等で停止したり、再開したりする時に コールバックもしくはなんだかの形でフックを掛けることはできないか知っている人いませんか?
358 名前:在日参政権反対 mailto:sage [04/09/18 12:36:45] >357 単純にメソッド余分じゃ駄目なの?他のスレッドに何かさせたいんでしょうか?ならイベントとか?
359 名前:デフォルトの名無しさん [04/09/18 13:51:36] >>358 システム側でスレッドが切り替えられたときにも引っ掛けないとパフォーマンスが計れないです。
360 名前:在日参政権反対 mailto:sage [04/09/18 14:13:26] パフォーマンスカウンターオブジェクトのスレッド実行時間では?
361 名前:デフォルトの名無しさん mailto:sage [04/09/23 02:34:14] はじめまして。 プログラミング自体初心者なのですが、 VisualStudioC#で作ったプログラムの テキストボックスの中でバックスペースが効きません。 これってなんとかならないものでしょうか。
362 名前:デフォルトの名無しさん mailto:sage [04/09/23 02:40:37] Ctrl+H
363 名前:デフォルトの名無しさん mailto:sage [04/09/23 15:42:18] 前の文字を消すための代替方法を探しているのではなくて、 テキストボックスでバックスペースキーを認識する方法を探しています。
364 名前:デフォルトの名無しさん mailto:sage [04/09/23 15:48:46] と言われても私の周辺では普通に有効だし。 コード上で変なことをしてるかキーボード補助系のなんかのアプリを使ってるか、果てしなく環境依存な話になるし。 そもそもTextBoxはWindowsの標準エディットコントロールをラップしてるだけだしなぁ。
365 名前:教えてください mailto:age [04/09/24 08:46:54] C#初学者です。 ナンバーズ予想ソフトをVC#で作りたいと思っています。 Winアプリで、ナンバーズとか株の最新データを取得してくるソフトが ありますが、あれってどのような仕組みでやっているのですか? 何か参考になるサイトや書籍などあれば教えてください。
366 名前:デフォルトの名無しさん [04/09/24 11:16:52] >>365 1.サイトからHTML(など?)をダウンロードする 2.ダウンロードしたHTML(など?)からナンバーズのデータを取得 3.取得したデータから、予想する 大雑把にこんな感じでやればいいのでは。
367 名前:在日外国人参政権反対 mailto:sage [04/09/24 11:32:46] ナンバー図は知らんが、株はサイトと直接ソケット接続してデータやり取りするものもあった希ガス.
368 名前:365 mailto:age [04/09/24 12:59:54] >366 ということは、まずHTMLのソースを元に配列化して、データを取得するということでしょうか? 取得の仕方だけが分からないんで・・・
369 名前:デフォルトの名無しさん mailto:sage [04/09/24 13:03:00] まずデータがどこにどういう状態/形式でおかれているか、によって話は全く違った方向に転がっていくだろう。
370 名前:366 mailto:sage [04/09/24 15:17:28] >>368 それは各自の工夫です。そんな甘いものではないはず。 まあヒントを。HTMLをダウンロードすることを前提に話すけど。 ダウンロードしたHTMLのうち、必要なデータがある場所というのはサイトの構成が変わらなければいつも同じなはず。 そういうのを、文字列の検索とか正規表現とかで探し出す。 運よく取得するサイトがXHTMLになっている場合は、System.Xml名前空間を駆使すれば楽になるかもしれない。
371 名前:在日外国人参政権反対 mailto:sage [04/09/24 15:55:14] >365 何がわからないのか明確にしる ソースの場所 ソースの形式 そのソースの取得方 プログラムの書き方 全部
372 名前:デフォルトの名無しさん mailto:sage [04/09/24 19:47:18] HttpWebRequest
373 名前:デフォルトの名無しさん mailto:age [04/09/25 14:06:36] ネットワークゲームを作る際に、通信に最初(ログイン)から最後(ログオフ)まで BinaryFormatter もしくは SopaFormatter にてシリアル化したオブジェクトのみを使用する事に問題点はありますか?
374 名前:デフォルトの名無しさん mailto:sage [04/09/29 00:02:22] >>373 なんか問題があったときにスニファで見てもよくわからないとかが ありそうなので、おいらは使わない Soapはしらないけど、効率わるいんじゃないの?
375 名前:デフォルトの名無しさん mailto:sage [04/10/02 10:37:47] 値型のnewってヒープを食わないんですよね?デフォルトのコンストラクタが呼ばれるだけで。 同じ変数に2回以上newした場合はどうなんでしょう。 ループの中で構造体とかを初期化したいがためにnewでクリアしようとするのは 問題ないんでしょうか? すごく抵抗を覚えるんですが・・・ ・パターン1 A a = new A(); for (int i = 0; i < 10000; i++) { a = new A(); // 以降Aを設定する処理 } ・パターン2 for (int i = 0; i < 10000; i++) { A a = new A(); // 以降Aを設定する処理 } ・パターン3 A a = new A(); for (int i = 0; i < 10000; i++) { // 自力で初期化 a.xx = ""; // 以降Aを設定する処理 } パフォーマンス的には3が一番いいような気がしていますが。 構造体を再度初期化する方法ってnew以外にあるんでしょうか?
376 名前:デフォルトの名無しさん mailto:sage [04/10/02 11:03:46] >>375 ボクシングされなければ、既に在る領域をコンストラクタで初期化しているだけのような気もする ……中を見てみないとどうにもいえないけど 不安ならば、パターン3の拡張として、 A に SetData みたいなメソッドを作り、そこで一気に値を変更してみればいかがか?
377 名前:デフォルトの名無しさん mailto:sage [04/10/02 11:21:45] >>375 > パフォーマンス的には3が一番いいような気がしていますが。 少なくとも速度的には一番悪い。 1と2では差は無し。意味的に大した違いも無し(aの寿命だけ。実質的な動作は同じ) > 構造体を再度初期化する方法ってnew以外にあるんでしょうか? static readonlyなEmptyフィールドを用意するとか。 意味的にはnew()するのと変わりませんよ? > ループの中で構造体とかを初期化したいがためにnewでクリアしようとするのは > 問題ないんでしょうか? > すごく抵抗を覚えるんですが・・・ そんなことよりも、初期値を指定しないで初期化する構造体の方に抵抗を覚えるな。
378 名前:375 mailto:sage [04/10/02 12:40:42] >>376-377 回答どーもです。 3が一番遅いというのは、newより個々のメンバをクリアする方が遅いんですか? 値型のnewの場合、内部的にmemsetみたいにクリア処理が1発走るだけなんですかね。
379 名前:デフォルトの名無しさん [04/10/02 12:57:09] C#でビデオキャプチャーはできますか? DirectXではできない(かなり面倒)と聞きました。 VFWで動きますでしょうか?サンプルなどありましたら、お教えください。
380 名前:デフォルトの名無しさん mailto:sage [04/10/02 13:43:36] >>379 DirectShow(のActiveXコントロール)による極簡単なサンプル ttp://chikuma.sit.ac.jp/2003-zemi/0103124/ASP/programs.htm DirectX9のDirectShowの.NETラッパ作成プロジェクト ttp://www.codeproject.com/cs/media/directshownet.asp
381 名前:デフォルトの名無しさん mailto:sage [04/10/04 01:17:53] このスレタイのC#を半角小文字英数のC#に変えてください
382 名前:デフォルトの名無しさん mailto:sage [04/10/04 01:19:03] そうすると不思議なことにC言語のスレッドと見分けがつかなくなるのです。
383 名前:デフォルトの名無しさん [04/10/04 01:51:54] #はシャープとは違う文字ですよ
384 名前:デフォルトの名無しさん mailto:sage [04/10/04 01:57:37] それでも半角の方が公式なんだがな。
385 名前:デフォルトの名無しさん mailto:sage [04/10/04 01:59:03] スレタイに半角 # は使えません。
386 名前:デフォルトの名無しさん mailto:sage [04/10/04 02:01:23] ム板だけでも#が使えるようにならんもんかな
387 名前:デフォルトの名無しさん mailto:sage [04/10/04 17:39:45] c#stdを使っているのですが ユーザーコントロールを配置して デバッグしようとすると、ユーザーコントロールはビルドされていないとダメって コンパイル時に起こられるのですが、みなさんはどうしてますか? VS.NETproとかだとこういうエラーはでないんですか?
388 名前:デフォルトの名無しさん mailto:sage [04/10/04 18:07:35] >387 151はけーん
389 名前:デフォルトの名無しさん [04/10/12 23:27:56] age
390 名前:デフォルトの名無しさん mailto:sage [04/10/17 23:11:19] button1のプロパティを全部button2にコピーする簡単な方法ってありますか?
391 名前:デフォルトの名無しさん mailto:sage [04/10/17 23:36:11] 意外に必要なプロパティなんて少ないもんだぞ。 問答無用に全部コピーすると問題が出たりするしな(だからWindowTargetをわざわざ除外してる)。 public void CopyButton(System.Windows.Forms.Button from, System.Windows.Forms.Button to) { foreach (System.Reflection.PropertyInfo inf in typeof(System.Windows.Forms.Button).GetProperties()) { if (!inf.CanRead || !inf.CanWrite || inf.Name == "WindowTarget") continue; inf.SetValue(to, inf.GetValue(from, null), null); } }
392 名前:デフォルトの名無しさん mailto:sage [04/10/18 00:04:22] >>391 すごい。 ありがとうございます! やってみます。
393 名前:デフォルトの名無しさん [04/10/18 18:35:36] C♯相談室から流れてきました。 タブ型のメモ帳を作っています。 richTextBoxを乗せたtabpageを追加していくようにしています。 上書き処理をしたいのですが自分で考えた方法は openFileDialogでファイルのパスを取得してloadfileで読み込む →内容を変更→savefileを使いpathパラメータはopenfileDialog.Filenameを指定して上書き としているのですが、別のテキストファイルを開いたあとで開いてあったテキストファイルを上書きしようとすると Filenameが後に開いたテキストファイルのものになってしまいます。 ファイルのパスをタブごとに維持しておく方法どうすればいいんでしょうか?
394 名前:デフォルトの名無しさん mailto:sage [04/10/18 18:46:47] >>393 タブのページ毎の情報はタブのページ毎に保存しとく。 OpenFileDialog.FileNameを、それぞれのTabPageオブジェクトのTagにいれといて 保存する時はそれを使うようにする。 ……むう、微妙に説明するのが難しい。 //開く時 TabPage page = tabControl1.SelectedTab; page.Tag = openFileDialog.FileName; ((RichTextBox)page.Controls[0]).LoadFile(openFileDialog.FileName); //上書き保存する時 TabPage page = tabControl1.SelectedTab; string filename = (string)page.Tag; ((RichTextBox)page.Controls[0]).SaveFile(filename); こんなかんじで。
395 名前:デフォルトの名無しさん mailto:sage [04/10/18 20:10:25] 早いレスありがとうございます。 しかし自分の説明不足からかわからない点が。 上の記述はすでにtabが開いてあるとしてのものですか? 説明が下手なのでコードを貼り付けます。 //開く private void menuItem3_Click(object sender, System.EventArgs e) { openFileDialog1.DefaultExt = "*.txt"; openFileDialog1.Filter = "TEXT Files|*.txt"; if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK && openFileDialog1.FileName.Length > 0) { string path = openFileDialog1.FileName; string name = Path.GetFileName(path); string title = name; this.newtabpage = new System.Windows.Forms.TabPage(title); this.tabControl1.Controls.Add(this.newtabpage); this.newrichTextBox= new System.Windows.Forms.RichTextBox(); this.newrichTextBox.Dock=System.Windows.Forms.DockStyle.Fill; this.newtabpage.Controls.Add(this.newrichTextBox); this.newrichTextBox.LoadFile(openFileDialog1.FileName, RichTextBoxStreamType.PlainText); this.tabControl1.SelectedTab=this.newtabpage; this.newtabpage.ToolTipText=path; TabPage newtabpage = tabControl1.SelectedTab; newtabpage.Tag = openFileDialog1.FileName; MessageBox.Show(this.newtabpage.Tag.ToString());//パスが取れてるか確認のため。 } } としてみましたが結果が同じになってしまいました。 試行錯誤中なので無駄な記述があるかもしれません。 説明不足の上長文で申し訳ありませんがどうかお救いください。
396 名前:デフォルトの名無しさん mailto:sage [04/10/18 20:19:32] >>395 this.newtabpageとかthis.newrichTextBoxとかは他で使わないならローカル変数でもいいような。 それはさておき開くときにファイル名を記録していないわけで。 this.newtabpage.Tag = name;
397 名前:デフォルトの名無しさん mailto:sage [04/10/18 20:58:23] >>396 ファイル名を記憶してみても 別のテキストファイルを開いたらすでに開いてあるテキストファイルのタブのtagも新しく開いた方のtagになってしまいます。 根本的におかしい部分はありますか? 何回も本当に申し訳ありません。挫折したくないので頑張らせてください。お願いします。
398 名前:デフォルトの名無しさん mailto:sage [04/10/18 21:02:04] >>397 すいません、解決しました。 パスを確認する別の記述の部分に TabPage newtabpage = tabControl1.SelectedTab; を加えるのを忘れていました。 ありがとうございました!
399 名前:デフォルトの名無しさん [04/10/18 22:19:49] 先生! 文字列型変数は、削除されないんですよね? string s = "ぬるぽ"; s = "にりぺ"; とした場合、「ぬるぽ」は残ってるんですよね? で、「ぬるぽ」にアクセスしたいときはどうしたらいいですか?
400 名前:デフォルトの名無しさん mailto:sage [04/10/18 22:22:16] アクセスって?
401 名前:デフォルトの名無しさん mailto:sage [04/10/18 22:23:40] >>399 string s = "ぬるぽ"; string backup = s; s = "にりぺ"; System.Console.WriteLine(backup);
402 名前:デフォルトの名無しさん mailto:sage [04/10/18 22:23:48] 参照が無くなったものにアクセスはできない。 GCの管理下に入ってそのうちメモリから消されるのみ。 というか > 文字列型変数は、削除されないんですよね? て意味不明。 System.Stringは変更不可クラスで、その意味は 文字列を操作する各メソッドが自分自身のインスタンスを書き換えるのではなく 新しいSystem.Stringインスタンスをつくって返すってこと。
403 名前:デフォルトの名無しさん [04/10/18 22:24:21] >>400 string p = s; で、"ぬるぽ"を取得したり、"ぬるぽ"を消して、別の値を入れたり。 です。
404 名前:デフォルトの名無しさん mailto:sage [04/10/18 22:41:45] >>399 > とした場合、「ぬるぽ」は残ってるんですよね? もう手の届かないどこかに残っている。そのうち消えるが。 > で、「ぬるぽ」にアクセスしたいときはどうしたらいいですか? 諦めるのがよい。 >>403 >"ぬるぽ"を消して、別の値を入れたり。 別の値をどこに入れるね?
405 名前:デフォルトの名無しさん mailto:sage [04/10/19 00:14:02] >>403 あんたはいったいなにがしたいんだ…?
406 名前:デフォルトの名無しさん mailto:sage [04/10/19 01:40:32] >>402 どうでもいいことだが、参照が無くなってもWeakReferenceでアクセスできるような。 いや、これはGCの対象になるだけで参照は無くなってはいないか。
407 名前:デフォルトの名無しさん mailto:sage [04/10/19 12:40:14] 正規表現を全部エスケープする正規表現ってどうすればいいいですか?