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 くらい
82 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:59:22 ] 79に追記です、四角形の範囲指定だと、X,Y座標でif使って出来るのですが 円形でクリック処理を分ける場合はどうすればいいのでしょう?
83 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:00:21 ] Regionつかえ
84 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:02:01 ] >>82 円の方程式って中学数学だろw そんな知識もないのにプログラムを書こうっての?
85 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 23:04:33 ] 円の方程式の知識なんか無くても大丈夫、いける、いける。 でも自分で調べられないと無理だぜ。
86 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 01:48:34 ] 円周の長さ=6×半径 ってやつのことですか?
87 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 01:51:08 ] ここで聞くよりフォーラムで聞いた方がよくね? ○○つかえとかしか言わないしさ あっちは回答者のレベルが高いからコードも提示してくれるよ
88 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 01:57:38 ] これがゆとりか・・・
89 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 01:57:48 ] ○○でググればいいじゃない
90 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 02:06:30 ] ゆとりとか関係ねーよ。 検索廚の方がほんとウザい
91 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 03:02:33 ] いやお前の方が30倍ぐらいウザい
92 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 08:26:51 ] これがにとりか・・・
93 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 09:09:55 ] 描写した図形にクリックイベントを付けるにはどうすればいいですか
94 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 09:25:02 ] WPF にして Canvas と Ellipse 使ったら?
95 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 10:12:21 ] >>94 ごめんなさい、解決したので既存の方法の CreateGraphics.FillEllipseを使って図形を表示しているのですが、 別のウィンドウが描写した図形に重なると、そこに描写してあった図形が消えてしまいます この対策はありませんか?
96 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 10:15:18 ] Paint イベント内で描画してる?
97 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 10:18:31 ] 初歩的な質問ですいません 一つのメソッドに MouseEventArgs と通常の EventArgs を共存させることは不可能でしょうか? Form1のClickイベントで、押されたマウスで分岐処理させようと思うのですが MouseEventArgsでは無いのでe Button&MouseButtonsが使えません
98 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 10:21:35 ] >>96 あー。。どうしてもPaintイベントを使わなくてはいけませんか? ボタンで描写させたいのですが、どうすればいいでしょう?
99 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:13:23 ] >>97 MouseClick使え
100 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:13:53 ] WS_CLIPSIBLINGSスタイル追加してやるとか
101 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:30:25 ] >>98 描画手順を持ったオブジェクトをListに格納しておくとかそういう方法を使う
102 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:35:13 ] 1秒間だけラベルを表示させておきたい時って皆どうしてる? 俺は1000msのタイマー一つ用意して、Tickにlbl.Visible=false;書いて 表示させるときにlbl.Visible=true;Timer.Enable=true;ってしてるんだけど もっと良い方法無いかな
103 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 11:47:42 ] >>101 詳しく教えて貰えませんか'
104 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 13:46:45 ] >>102 それでいいんじゃね ライブラリ化するほど汎用性があるコントロールとも思えんし >>103 詳しくと言うほどのこともないけど Graphicsを引数に取るDrawメソッドを持った抽象クラスを用意 その派生として四角とか丸とかを描画するクラスを作成 んでそれらをリストとして持っておく Paintイベントでリストの内容を列挙して順番にDrawしていく 描画追加ボタンでリストに描画クラスのオブジェクトを追加しInvalidateで再描画要求
105 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 15:13:16 ] 103です >>104 の言ってる事が全く分からない・・・w 抽象クラス、描画するクラス作成までは分かるんだけど リストとして持っておくって何?駄目だ・・・ググってくる
106 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 15:18:40 ] やっと元の意味がわかった・・ 別ウィンドウってそういう意味か。 Imageに関連付けしたBitmapに直接描けばよろしい
107 名前:デフォルトの名無しさん [2009/10/19(月) 16:02:37 ] DataGridViewのフォーカスの有るのセルの四角のラインを消す方法はありませんか? 出来れば具体的な方法をお願いします
108 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:17:07 ] >>106 bitmap使わないと駄目ですかね'?
109 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:19:08 ] >>107 こういうやつ? ttp://dobon.net/vb/dotnet/datagridview/noforusframe.html
110 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:20:45 ] >>108 paintがいやならそうなるかもね 再描画時に何を描いたか取っておくか、毎回描くかのどっちかしかないと思うよ
111 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:22:51 ] 再描画されたってのを取得するイベントは無いですよね?
112 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:26:14 ] あ、されたってのじゃなくて再描画されるまえに呼ばれるイベントです そんな都合のいいの無いですよね
113 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 16:32:40 ] メモリリークしているようなのですが あるオブジェクトが現在どこから参照されているのか調べる方法はありますか?
114 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:06:32 ] >>109 素晴らしい! ありがとうございます!
115 名前:112 mailto:sage [2009/10/19(月) 20:48:05 ] 112です、別の方法を思いついたので質問します クリックした時にその座標の色を取得することは出来ませんか? これが実現すれば出来そうです、やり方あれば教えて下さい。
116 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 20:56:31 ] >>115 dobon.net/vb/dotnet/graphics/invokepaint.html dobon.net/vb/dotnet/graphics/screencapture.html で画面キャプチャして、マウスをクリックした位置のドットの色を得れば?
117 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:00:37 ] backgroundworker がツールボックスにない。 どこにあるんだ! 環境 Visual C# 2008 Express Edition
118 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:26:03 ] >>117 ツールボックスのコンポーネントの所にないかい?
119 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:39:05 ] >>117 そんな子供騙しなおもちゃ、なくても困らないでしょ。 あれは言っちゃ悪いけどちょっと前ならVB厨って呼ばれた用な人たちのための コンポーネントだと思うけど。
120 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 23:58:11 ] あれで用が足りる時は普通に便利だと思うけど?
121 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 00:01:17 ] 便利に使える物は使ったらいい
122 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 01:38:29 ] 子供だましなおもちゃって 「オレはあんなもん無くても書けるぜすごいだろ!」 って言いたいの? 子供ですね。
123 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:22:00 ] Xeno091017 正式版 koreawatcher.at.infoseek.co.jp/janexeno.htm ・正式版として最初のリリース。 ・Jane終了時の挙動のみ091015試作品から変更された。 ─────────────────────── 予告どおり、正式版をリリースしました。×ボタンのツールチップ ヒントに関して、真魚のソースを参考にして修正を試みました。 JaneNidaの開発は事実上終了です。2chの仕様変更などで 対応するかもしれません。
124 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 05:54:15 ] Formにボタン等のコントロールを動的に生成した場合フォームを閉じれば 自動的にメモリは開放されるのでしょうか?
125 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 06:18:24 ] される。
126 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 07:12:39 ] >>125 朝一でありがとう。
127 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:33:37 ] メモリリークって何で駄目なの?
128 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 09:55:03 ] リソースは有限だから
129 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 10:56:04 ] 一度メモリリークなったらどうやって復旧するの? 再起動するしかない?
130 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 11:00:44 ] プログラムの再起動ということならそう
131 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 11:09:36 ] なら、今の所完全にメモリリークを発生させないようにすることは出来ないの? 一つ一つにtry-finallyでdisposeするとか?
132 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 11:13:58 ] 意図的に保持してるのかそうでないかは判別できないからね
133 名前:デフォルトの名無しさん [2009/10/20(火) 11:14:04 ] ListやDictionaryのように、メンバとしてアレイやリスト構造のデータを持ちながら、 list[10]のように、あたかも配列の要素を取り出すようにアクセスできる ・・・という機能を、自作クラスに持たせる方法ってありますか?
134 名前:デフォルトの名無しさん [2009/10/20(火) 11:20:27 ] ジェネリック
135 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 11:44:32 ] インデクサ
136 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 13:06:35 ] >>131 メモリリークをどういう意味で使ってる?
137 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 13:44:18 ] >>118 uproda11.2ch-library.com/206356tyL/11206356.jpg コンポーネントの項目が無い! >>119 無くてもできるけど、 楽にできるならそっちのほうがいい。
138 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 14:12:44 ] >>137 1. 新しいプロジェクトを追加し、[Windows フォーム アプリケーション] または [Windows フォーム コントロール ライブラリ] を選択します。 2. Windows フォーム デザイナ、ユーザ コントロール デザイナ、コンポーネント デザイナを開きます。 3. ツールボックスから任意のコンポーネントを配置します。
139 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 14:28:12 ] 画面はWPFじゃないか ポトペタじゃなくてコードで作れ
140 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 14:28:33 ] WPFのXAMLエディタではサポートしてないという話だろ。 手作業で書くしかない。
141 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 15:22:48 ] >>138-140 >WPFのXAMLエディタではサポートしてないという話だろ。 よくわかった。 サンプルコードへのリンクも張っておきます。 【WPF】お手軽簡単別スレッド BackgroundWorker pro.art55.jp/?eid=1180258
142 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 15:48:30 ] BackgroundWorkerがコンポーネントなのがおかしいんだよな タイマーやダイアログなんかはUIに密着に関係してるからまだわかる データソースとは違ってデザイナが使えても何の意味もないし
143 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 15:55:01 ] タイマーもコンポーネントだけど。
144 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 16:01:21 ] タイマがUIに密着……? それならBackgroundWorkerも同程度には「密着」してると思うが
145 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 16:04:20 ] タイマーはWindowsのメッセージに依存してるからどうせUIの外では使えない BackgroundWorkerはUIには全く依存してない WPFでもそのまま使えるのがその証拠
146 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:02:03 ] 基礎的なことですが教えて下さい Form1からForm2のフォームを呼び出し Form2のボタンを押したらForm1で宣言した変数に数字を入れたいのですが その場合Form2のButtonクリックイベントにどうやって書けばいいでしょう?
147 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:15:21 ] >>145 タイマーがWindowsメッセージに依存してるからって デザイナと何の関係がある? あとコンポーネントタブにあるのは Windowsじゃないサーバータイマーだぜ。
148 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:19:23 ] タイマーはUIの外から使えないからコンポーネントでもおかしくないって? どんな理屈だよ。 まあサーバータイマーはUIと関係なく使えるけどな。 TableAdapterもデフォルトはコンポーネントだな。
149 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 17:42:07 ] >>146 Form1にpublicなメソッドなりプロパティなり作ってForm2から呼べばいい Form2には事前にForm1のインスタンスを渡しておく。
150 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 18:02:53 ] >>149 インスタンスがよく分かりません; 参考になるサイト有りませんか?
151 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 18:25:14 ] >>150 初歩すぎるからどのサイトでもいいと思うが。 ちなみにForm1から見たForm1のインスタンスはthis
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 せればいいと思うよ。