1 名前:デフォルトの名無しさん mailto:sage [2009/10/14(水) 23:23:45 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part54 pc12.2ch.net/test/read.cgi/tech/1250911923/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>2-5 くらい
152 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 18:38:32 ] Form2からForm1を呼びたい場合は、Form1側に private static Form1 _form1Instance; int form2count = 0; public int form2ins { get { return form2count; } set { form2count = value; } } これでいいんですかね?
153 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 18:41:46 ] きも過ぎるだろ。
154 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 18:52:48 ] Form2のコンストラクタにでも引数追加してやれば
155 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 19:22:59 ] >>コンポーネントの人たち そもそも、ツールボックスに表示されているのは殆どコンポーネントだし [コンポーネント]にあるのは明確なカテゴリのない残り物 てか、適当な事書く前に.NETでのコンポーネントの定義を確認してくれよ
156 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 20:59:56 ] >>152 きもすぎワロタw //Form1.cs public string Data { get; set; } private void button1_Click(object sender, EventArgs e) { Form frm = new Form2(); frm.Show(this); } //Form2.cs private void Form2_Load(object sender, EventArgs e) { var frm = this.Owner as Form1; if (frm != null) frm.Data = "kimosu"; }
157 名前:152 mailto:sage [2009/10/20(火) 21:39:46 ] >>156 駄目だw理解出来ないw var frm = this.Owner as Form1; これは一体何してるの? if (frm != null)してるなら、どのタイミングでfrmをdisposeすればいいの? Form2のClosingでdisposeしとけばいい? まさか俺はdisposeの意味を全く理解して無いだけか get; set; これってgetとsetの処理分けて書かないと駄目なんじゃないの? 多分スルーされて涙目になるんだろうけど、 誰でもいいから教えてよ;w;
158 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:51:38 ] なんつーかまずはふらっと行ってこい。 get;set;については匿名係長でググれ
159 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:54:18 ] というかForm2からForm1の値を弄るとかキモイな
160 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:55:28 ] 仕様からキモイから仕方ない。
161 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 21:58:54 ] え? じゃあ例えばForm2からForm1の背景色を変更するときとか普通はどうするの?
162 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:02:51 ] イベント使う
163 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:04:48 ] そんなイベントある? Form2に設置したボタンを押された回数を Form1で宣言した変数に入れたい時もイベントで出来るの?
164 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:09:29 ] カウントしてけばいいんじゃね?
165 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:09:33 ] その変数ほんとにForm1に宣言するのが自然ですか? 別の独立したクラスに持たせて,Form1とForm2の両方から参照した方がスマートではありませんか?
166 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:11:13 ] フォームがクラスであるとこを理解できないのとグローバル変数が大好きなのが合わさるとごらんの有様だよ
167 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:13:09 ] >>158 var frmは理解しました。 varってクラスの型なんですね disposeの件は勘違いしてました。 今までのソース見てもそんなのしてねぇや、俺アホす 匿名係長でググってもめぼしい物が見つからない・・・ >>165 やべえ、感動した。 まだほんの小規模なツールしか作ったこと無くて、クラスも1つしか使ってなかった そうか、それで別のクラス作ればいいのかw
168 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:15:16 ] >>166 「Form1の変数を弄るためのイベント」みたいにForm1を意識して作るんだったら 直接Form2からForm1を触るのと変わらん どうせ意識するんだったら意識する範囲を別のクラスに括り出す
169 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:19:43 ] クラスの概念が理解出来てなかった 未だにnamespaceとかの概念も分からないわ 新規にクラス作るときは、Form1.csの中に書いても良いのかな? namespace app1 { public partial class Form1 : Form { public Form1 } //ここに、public partial class aho{ }ってすればクラス追加したことになるの? } というか、ここで聞けるほど簡単な所でひっかかってるんじゃなさそうだから ソースの構造体とかの概念を説明してるサイト無いのかな ググってもサンプルとかはいくつも出てくるけど、そんなサイトのほうが少ないし どうするかな・・・
170 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:23:38 ] >169 ここで聞いちゃいけないほど簡単なことをきいてんだよお舞は(´・ω・`)
171 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:24:39 ] >>169 www.atmarkit.co.jp/fdotnet/csharp_abc2/index/index.html 行ってらっしゃい 読破するまでは戻ってくるなよ
172 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:26:29 ] どうも。読破するまで戻りません。 ありがとう
173 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 22:30:52 ] >>167 君が特命係長のファンだというならば、 次は自動プロパティでぐぐることをお勧めいたします。
174 名前:デフォルトの名無しさん [2009/10/20(火) 23:07:04 ] ComponentModel.Componentのサブクラスの BackgroundWorkerはどうやってWinFormのControlや WPFのUIElementに同期してるんだろ。 コンストラクタなどでフォームのthisを渡しているふうでもないし、 DelegateのTargetを使ってるふうでもない。
175 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:11:03 ] いや同期したら意味ないから イベントは全部非同期コールバック
176 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:15:11 ] まだ読み終わってないけど、>>173 見て 最後一つだけ質問させてくだはい class plex{ private int clickcount=0; public int ClickCount { set { clickcount = value; } get { return clickcount; } } } --- Comp c = new Comp(); if (c!=null) { c.ClickCount++; //0に1追加 MessageBox.Show(c.ClickCount.ToString()); } //毎回1が返される 何度setしてもカウントがgetするたびに0になってます 上手くsetされていないのかもしれないんですが、どこがおかしいか指摘もらえませんか?
177 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:17:39 ] プロパティに++は使えない
178 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:17:45 ] あ、class名はCompですね、書き間違えました
179 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:20:15 ] ++が使えないなら0が返るのでは? c.ClickCount=c.ClickCount+1; こうしてみましたけど、これでも毎回1しか返してきません
180 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:23:04 ] Comp c = new Comp();をクラス直下に移動する
181 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:23:14 ] エスパーしてみる。 おそらくButton_Clickなんかの中でnewしてるんでしょ。 var c = new Comp(); // ←新しく作ったので、値0から : なんか処理 var c = new Comp(); // ←また新しく作ったので、値0から
182 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:25:55 ] 一番いいのはイベントを飛ばすのだけれど、この分だとForm1のインスタンスを渡すのも辛そうだ。 staticなclassにpublicフィールドもta せればいいと思うよ。
183 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:26:14 ] >>180 ,181 見事、それが原因でした そういうものなのね、少しそれも疑ったけれど 毎回clickcountに++されていってると思ってて newごとにそうなるとは思わなかった。 ありがとうございます。
184 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:28:24 ] >>175 説明が足りなんだ。DoWorkじゃなくて ProgressChangedとRunWorkerCompletedのこと。
185 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:28:26 ] >>177 嘘付くな
186 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:31:49 ] 小間苛やさしいなw
187 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:32:52 ] >>184 コンポーネントなんだから自分の親が誰かくらいは知ってるんじゃないの
188 名前:183 mailto:sage [2009/10/20(火) 23:34:17 ] あー・・・ >>176 のソースで、 Comp c = new Comp();を使うと、clickcount=0になるんですよね? この場合、値をリセットせずにプロパティを参照することはできませんか? 何度かそのフォームを表示させて、ボタンをクリックさせるたびに、 以前のクリックした回数は保持させておきたいのですがそんなことは出来ませんか?
189 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:34:32 ] >>174 AsyncOperationつーもんがある
190 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:40:07 ] >>188 毎回インスタンス生成してるんだから、カウントをリセットしているわけじゃなく、毎回新しいCompのプロパティを0→1にしている。
191 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:47:26 ] >>184 WinFormsやWPFがグローバルなSynchronizationContextを提供してるみたい Componentは特に関係なさそう
192 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:47:54 ] >>190 あー、毎回1になる原理は分かりました。 しかし、毎回インスタンス生成しないと、参照出来ないのでは?
193 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:54:27 ] >>189 ,191 ありがとう。AsyncOperationは少し調べてみます。
194 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 23:56:03 ] >>192 レス全部読んでる?
195 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:00:30 ] >>194 何か重要なレス見逃しました? 一応全部目を通してるんですが・・・
196 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:02:15 ] >>195 >>180 Comp c = new Comp(); private void button1_Click(…
197 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:08:26 ] 変数のスコープをもっと考えなさいってこと。
198 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:11:23 ] >194 そもそも読んだところで理解出来ないと思われ
199 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:11:59 ] >>196 あ、じゃなくて、直下に移動させてその問題は解決したんですが Form1からForm2出して、Form2のボタンをクリックすると、 >>176 使ってclickcountにクリックした回数を++した後でForm2をClose このあと、2回目以降にForm2を呼んだとき、 どうしても毎回Comp c = new Comp();通りますよね。 このときclickcountに格納された値も0になってしまうのを回避する方法は無いですか? わかりづらくてすいません。
200 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:29:15 ] 生存期間を考えて、ふさわしい方法を考えようぜ
201 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 00:44:51 ] おまえはもうこっちにいけ。 pc12.2ch.net/test/read.cgi/tech/1255658236/ スレを汚すな。バカチンが。
202 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 01:05:20 ] はじめての言語がC#、いま2ヶ月たちました。 結構簡単ですね。簡単な業務用ツールいくつか作れました。 って感じがするw
203 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 01:16:18 ] >>199 だけ教えて貰えませんか この方法あれば終われますので;
204 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 06:39:16 ] あきらめろよ
205 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 09:56:43 ] 最初に答えるときに、ふらっと誘導しようと思ったんだが ここまで引っ張るとは思ってなかったわ・・・
206 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 12:22:52 ] HTMLをネット上から取得した場合 画像や、リンクがフルパスではなく ../img/image.jpg /help.htm のように、なっていることが多いのですが これをどうにか、フルパス指定にする方法はないでしょうか
207 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 12:27:01 ] base要素か現在のurlからUri作るだけ
208 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 12:27:11 ] C#一切関係ないなそれ BASEでも指定すればいいんじゃないの。何に使いたいのかは知らんけど
209 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 12:48:36 ] >>207 ,208 ありがとうございます 教えていただいたもので考えた結果 string url="google.com "; Uri base=new Uri(url); HTMLをサーバーから取得し、htmlというstring変数に入れる html内を検索し、../や/で始まるものを置換するという方法で一応できる・・・のでしょうか こういう処理しか思い浮かばなかったのですが 最初から、フルパスで取得したりはできないですよね・・・・ この処理すごく煩雑になると思うのですが、もうちょっとスマートな方法はないでしょうか?orz
210 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 12:53:22 ] あ、ちなみにやりたいことは ネットを見る際特定の広告などを表示しないなど、直接ではなく少し改変して表示するブラウザの作成です
211 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 13:12:30 ] 現在のページのUriはわかってるわけだから、 このタイプのコンストラクタを使う。 Uri (Uri baseUri, string relativeUri)
212 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 13:42:37 ] >>211 それを調べてみたのですが BaseUriの後にRelativeUriをくっつけてるだけですよね? つまり、RelativeUri(/index.htmlなど)が分からなければいけないので 取得したソースから[/***.html]や[../***.jpg]などを検索、取得しRelativeUriにいれて一個ずつ置換しなければなりませんよね? 自分が勘違いしているだけかもしれませんが そうなると、ソースの中から上記のものを取得しなければならない作業があるわけですが それを簡単に行うことはできますでしょうか? 自分が考えついたのは ソースないで「"../」や「"/」で始まる部分を検索し、そこを置換という方法だけだったのですが すごく煩雑でしかも、/で始まらない場合には対応できないので 何か他にいい案がないものかな。と思いまして・・・
213 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 13:48:50 ] 正規化
214 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 15:17:25 ] >>212 言ってる意味が分からないな。 urlを食わせればそのページからのリンクをフルパスで 一覧してくれる便利な関数やライブラリはないかという話なら標準のBCLにはない。 だいたい、相対URLが ../ や /で始まってるとも限らないだろ?
215 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 15:23:35 ] それから、これはURLの正規化をしてくれるよ。 >Uri (Uri baseUri, string relativeUri) base=www.xxxx.com/xxx/yyy/aaaa.html として relativeUri=../zzz/xxx.html なら、ちゃんとこうなる。 www.xxxx.com/xxx/zzz/xxx.html relativeUri=/bbb.html なら、こうなる。 base=www.xxxx.com/bbb.html
216 名前:デフォルトの名無しさん [2009/10/21(水) 17:54:17 ] リストビューで、非フォーカス時に選択されている行の背景色は淡いグレーですが、 まるでフォーカスが当たっているように青にするにはどうすれば良いでしょうか?
217 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 18:05:59 ] グローバルな設定はできたと思うけど混乱するのでやめた方がいい リストビューだけ変えるにはオーナードローしかないんじゃね
218 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 18:14:15 ] フォーカスの外れたタイミングでSelectedItemsのBackColorとForeColorかえてやるとか
219 名前:デフォルトの名無しさん [2009/10/22(木) 20:37:24 ] すいません。教えてください。 クライアント複数(C#でWinアプリ)→サーバー(SqlServer2005Express)というアプリを作りたいです。 このアプリを配布する前提なのですが、どのように作成したらよいでしょうか。 「サービスベースのデータベース」で作成してサーバーでのデータベース運用にできるのでしょうか? また、どのように配布するのでしょうか。 よろしくお願いいたします。
220 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 21:47:28 ] >>219 1)ASP.NETでつくる。 2)WebServiceでプレゼンテーション層を作り、ClickOnceでクライアントに配布。 便乗で質問してよろしいでしょうか? XmlWebサービスでDataTableを取得し、コンボボックスのデータソースにしようとしています。 DataTableを取得するまではできたのですがDataSourceにつっこんでも欲しい値がでません。 コンボボックスには〜.DataViewみたいな型情報が出てしまいます。 XmlWebサービスで取得する値は、DBからSelect文で1列だけ取得したものです。 for eachで値が取れていることは確認し、Items.Add()で追加することもできました。 だけど、ComboBox.DataSourece = datatable;の形で値を表示したいです。 なぜ正しくでないのか、そして正しくでる方法を知っている方がいましたら教えてください。 よろしくお願いします。
221 名前:デフォルトの名無しさん mailto:sage [2009/10/22(木) 21:49:59 ] >>220 はぜんぜんわかってないとみた。
222 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 08:32:58 ] >>220 DisplayMember と ValueMember を指定
223 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 12:17:45 ] >>222 thx。試してみるわ。
224 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 15:50:21 ] すまん、どっかにオブジェクト参照残ってるぽくて、強制ガベコレしてもデストラクタまでこないんだがどんな風に掴まれてるのかオブジェクトグラフを辿る方法とかない?
225 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:14:33 ] 知るか禿げ
226 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 21:33:32 ] アルゴリズムとデータ構造を勉強しようと思っているんだけれど、言語はC#でいいかな? 本はC言語の方が充実しているみたいだが、C#にも強くなりたいと思っているので。 他にC、Java、JavaScriptの文法ならわかる。
227 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 21:35:18 ] >>226 今からC++覚える意義は何もないのでC#でいいよ
228 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 21:36:10 ] Rubyがいいよ
229 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 22:02:00 ] Haskellにしとけ
230 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 22:12:56 ] >>228-229 ふざけんな
231 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 22:17:11 ] ふざけんなとは、どういう意図で言ってるんだ?
232 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 23:10:52 ] C#スレで別の言語すすめんな!スレ違い!って意味じゃないのかね。 まあ Ruby も Haskell も別にふざけた言語じゃないと思うけど。 ちなみにC#でアルゴリズムの勉強するとしても Cとほぼ同じレベルの文法しかつかわないと思うよ。 使い方じゃなくて実装の方の勉強をするんでしょ?
233 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 23:18:18 ] おまえに答えろと言ってねえよ すっこんでろ
234 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 23:19:46 ] >>232 うん。 使い方なら、(言語は何であれ)そもそもライブラリが充実しているのでそちらを使えるようになればいいと思っている。 目的はそのための基礎づくり。
235 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 23:21:18 ] C#のすれでC#でいいかなとかもうばかかと
236 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 23:42:15 ] なにこのうんこな流れ
237 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:36:29 ] うんこは水に流すしかないな
238 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:03:47 ] 別のExeのプロセスをフックするにはどうしたらいいんでしょうか?
239 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 12:40:01 ] プロセスのフック、なんてものはない。 別プロセスの何をフックしたいんだ?
240 名前:238 mailto:sage [2009/10/24(土) 13:08:39 ] 自己解決しました
241 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:14:38 ] よかったね。
242 名前:238 [2009/10/24(土) 13:28:53 ] してません。 サブクラス化?って奴だと思うんですが、自身のウィンドウしかできないもので。
243 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 13:32:41 ] >>238 おれは優しいので教えてあげる API
244 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 17:59:42 ] 自己解決しました
245 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:09:21 ] サブクラス化ってことは、ウィンドウメッセージね。 あれは C# じゃ無理。グローバルフックが必要だから。
246 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 22:23:07 ] C#でグローバルフックできるよ。
247 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:08:43 ] へー。どうやってやるの? LL じゃ意味がないのはわかってるよね?
248 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:14:46 ] >>247 ggrks www.google.co.jp/search?hl=ja&source=hp&q=C%23+%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%83%95%E3%83%83%E3%82%AF&lr=&aq=f&oq=
249 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:19:50 ] LL じゃん。ウィンドウメッセージをフックしてくれよ。グローバルフックで。
250 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:22:03 ] まぁ、意味がわかってないバカってことだな。
251 名前:243 mailto:sage [2009/10/24(土) 23:25:50 ] おれのことスルーしてる?
252 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 23:27:01 ] お前ははなから相手にされてない。