ふらっとC#,C♯,C#( ..
52:デフォルトの名無しさん
08/01/12 21:13:50
>>51
ListView?
53:デフォルトの名無しさん
08/01/12 21:44:20
かちゅーしゃだとスレタイが化けるのはおれだけ?
IEその他だとなんともない
「ふらっとC#@`C♯@`C#(初心者用) Part23」
となっている
54:デフォルトの名無しさん
08/01/12 21:45:44
ありゃ書き込んだらカキコはまともに見える
"," が@と`になる
55:デフォルトの名無しさん
08/01/12 21:47:33
回答は(後略)
56:デフォルトの名無しさん
08/01/12 22:04:14
>>52
TreeViewでした(;´д`)
57:デフォルトの名無しさん
08/01/12 23:03:11
PictureBox上でToolTipを表示するのに
マウスカーソルの位置でメッセージ内容を変えてます
Popupイベントでメッセージを変えてるんだけど
ただ、これだどPictureBoxの中でマウスカーソルが移動した場合に
ToolTipが再度表示されなくて悩んでます
同じコントロール上でマウスカーソルを移動したときに
ToolTipを再表示する設定ってできますか?
58:デフォルトの名無しさん
08/01/13 02:07:30
親フォーム(クラス Form1)で、BackgroundWorkerのbgwを作り裏で処理をさせています。
また、Form1から子フォーム(クラス FormOption)を呼び出せるようになっています。
ここで子フォームのボタン(btnOK)を押されたときに、裏処理を中断させたいんですが、どうしたらいいでしょうか。。。
親フォームからだったらクラスが同じなのでbgw.CancelAsync();で良いと思うんですが、クラスが違うので使えません・・・
//まだクラスとかインスタンスとかの概念がよく理解してないのが問題だと思います(´・ω・)
//とりあえず似たようなケースで、異なるクラス間で変数いじったりするならstaticにすればいいってことは分かったんですが・・・
59:デフォルトの名無しさん
08/01/13 02:18:13
子フォームがShowDialogなら、返値みて判断。
Showでキャンセルした時に閉じるなら、子フォームにIsCancelledプロパティ用意して子フォームのClosedイベントでチェック。
一般的には子フォームにCancelledイベントを作ってキャンセルボタン押されたら発生、親フォームはイベントにキャンセル処理を設定。
60:デフォルトの名無しさん
08/01/13 02:18:20
別々のクラスオブジェクトのメソッドから共通のログファイルに書き出ししたい場合は
どのようにすればよろしいのでしょうか?
61:デフォルトの名無しさん
08/01/13 02:21:26
>>60
log4net
62:デフォルトの名無しさん
08/01/13 02:26:47
外部のライブラリを使わない方法を教えていただけませんか
63:デフォルトの名無しさん
08/01/13 02:35:51
>>62
内部に取り込む?
64:デフォルトの名無しさん
08/01/13 02:39:23
>>57
自分でやる。定番のルーチンだと思うけど。
以前の領域かどうか判別して、同じなら何もしない。
違ったらtoolTip.Active をいったんfalse にしといてSetToolTip設定、
Active をtrueに。
65:デフォルトの名無しさん
08/01/13 02:42:15
>>62
ユーティリティクラスの静的メソッドで書けばよかろうもん
66:デフォルトの名無しさん
08/01/13 04:52:46
TextBoxに対して、Ctrl+Vとかのショートカットを送る方法ってありますか?
右クリックメニューに独自処理を追加したいけど難しそうなので、独自処理+標準のコピーペーストとかをもつ
メニューを作りたいと思っています。
67:デフォルトの名無しさん
08/01/13 04:57:15
上記自己解決。
URLリンク(bbs.wankuma.com)
さんざん探してから書いたのに、書き込み後、一発目の検索で発見。
しかも、普通にメソッドで用意されてた。
68:デフォルトの名無しさん
08/01/13 06:30:26
まあ困ったらWeb検索するより先にMSDN/ヘルプを見ろってことだな
69:デフォルトの名無しさん
08/01/13 07:19:16
お〜い山田くん、これテンプレに貼っといて
URLリンク(msdn2.microsoft.com)
70:デフォルトの名無しさん
08/01/13 11:04:34
>>60
普通にTraceかTraceSource使えば?
71:デフォルトの名無しさん
08/01/13 12:02:17
tabControlに貼り付けたtoolStripが、勝手に移動したり、visible=falseになったりして困っています。
GripStyle=hiddenです。
ロックかけてもお構いなし。なにか良い回避策ありませんか?
C# 2008 Express Editionです。
72:デフォルトの名無しさん
08/01/13 13:05:39
コンボボックスの値を取得したいのですが
Itemには、No1〜No5までの5つの文字があって
ComBoBoxのテキストには(選択してください)
という文字列が入っています
この時、プルダウンメニューからアイテムを選択しなかった時は
ComboBox.Textには(選択してください)が入ってしまうのでしょうか?
またアイテムが選択されてる状態の時は、ComboBox.Textで取得できるのでしょうか?
73:デフォルトの名無しさん
08/01/13 13:30:08
(´・ω・`)しらんがな
74:デフォルトの名無しさん
08/01/13 15:03:01
そんなもん実験すりゃいいだろうが
75:デフォルトの名無しさん
08/01/13 17:13:08
配列の巡回を持った言語ならC#に限らない話だと思うのですが、
foreach中に配列の要素を消したい時、一番スマートなやり方としてはどんな物が有るでしょうか?
どうしてもforeachが2回以上必要な気がします。
プログラミングがうまい人ならもっとマシな方法をしていませんでしょうか?
下に目的の代換えソースを書いてみました。
//あまり綺麗では無いと思う例---
/*
「予期しない動作を防ぐため、コレクション内容の変更には使用しないでください。」という制限の為
削除する要素へのキーを別途用意した配列に入れてその配列を"又"foreachしています。
*/
foreach(OBJ val in table)
{
if (val.needDel) delArray.Add(val.key);
}
foreach(key key in delArray) //
{
table.Remove(key)
}
delArray.Clear()
76:デフォルトの名無しさん
08/01/13 17:21:01
前スレでさんざん水掛け論やってたな確か
77:デフォルトの名無しさん
08/01/13 17:24:07
>>75
つ RemoveAll()
78:デフォルトの名無しさん
08/01/13 17:24:55
そうだな。
元がListBoxだったのにそれそっちのけでなんやかややってたなw
79:デフォルトの名無しさん
08/01/13 17:28:20
OBJとかkeyとかなぜか先頭小文字のneedDelとかvarと紛らわしいvalとか
名前ばっかり気になるw
80:デフォルトの名無しさん
08/01/13 17:29:35
Smalltalk風ですな
81:デフォルトの名無しさん
08/01/13 17:34:54
つうかあの時の奴と全く同じミスをしとる。 >>75
アイテムで削除すると同じキーが複数存在した場合にうまくいかんぞ。
82:デフォルトの名無しさん
08/01/13 17:35:17
foreachは消すためには使えない
そもそも配列はAddもRemoveもできない
83:デフォルトの名無しさん
08/01/13 17:36:01
あらしや釣りでは無いです。
>76 >78
前スレ見てきました。 C#では
ToList().ForEach(index => listBox1.Items.RemoveAt(index) );
あたりが使えそうですね。 これはつまり匿名メソッド?
>79 >80
borland (Pascal?)から来ました。 var,valとalignはテキストエディタで色分けしています。
84:デフォルトの名無しさん
08/01/13 17:38:43
なんで素直にRemoveAll()じゃあかんの?
たしかにあのメソッド名は大変紛らわしいが、アイテムごとに条件を見て
削除するという目的にまさにぴったりなんだが。
85:デフォルトの名無しさん
08/01/13 17:38:50
>>75
for (i = list.Count - 1; i >= 0; i--)
{
if (...)
{
list.RemoveAt(i);
}
}
こんな感じかな。
86:85
08/01/13 17:42:13
しまった。RemoveAll()を忘れてた。
87:デフォルトの名無しさん
08/01/13 17:43:22
>>75の言う配列というのがList<T>のことならRemoveAll一択
88:デフォルトの名無しさん
08/01/13 17:54:26
前スレから見に戻って良かったです。前スレではRemoveAll()出てないし。
ヘルプが2割も理解できてませんが、List<T>::RemoveAllが良いのですね?
Delegateを返す関数を作ってvalueに入れる??
どうでも良い話。自分が一昔前にborlandつかってた頃のソースは小文字のみでした。
何処で聞いたんだっけな?
89:デフォルトの名無しさん
08/01/13 17:54:26
AddやRemoveが使えてるから、配列じゃなくてList<T>なんだろうな。
table.RemoveAll(x => x.needDel)
といったところか
90:デフォルトの名無しさん
08/01/13 17:55:27
>89
ありがとう。 まとまりました。
91:デフォルトの名無しさん
08/01/13 18:17:25
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのループで行うにはどうすればいいの?
92:デフォルトの名無しさん
08/01/13 18:25:38
RemoveAllかなんかで削除してからその他の処理をすれば?
93:デフォルトの名無しさん
08/01/13 18:28:06
RemoveAll厨必死杉
94:デフォルトの名無しさん
08/01/13 18:28:59
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのforeachで行うにはどうすればいいの?
95:デフォルトの名無しさん
08/01/13 18:33:32
forを使うといい
96:デフォルトの名無しさん
08/01/13 18:49:22
URLリンク(bbs.wankuma.com)
97:デフォルトの名無しさん
08/01/13 18:57:39
namber?
98:デフォルトの名無しさん
08/01/13 19:00:00
cgiの仕様だそうだからそっとしといてやれ。
99:デフォルトの名無しさん
08/01/13 20:25:32
XPの音量のプロパティのうちWaveとかの特定のものを操作したいのですが
.NETのライブラリを探してもないようです。
Win32APIを使うしかないのでしょうか?
100:デフォルトの名無しさん
08/01/13 20:32:46
うん
まあちょっと検索すりゃC#ラッパとかすぐ見つかるだろうけど
101:58
08/01/13 20:57:10
>>59
あ・・・ShowDialogって値返してたんですね(´・ω・)戻り値見る方法ですんなり解決しました。ありがとうこざいました。
102:デフォルトの名無しさん
08/01/13 21:43:33
ウインドウを表示するにはどうすればいいのでしょうか?
103:デフォルトの名無しさん
08/01/13 22:10:57
>>102
Form.Show();
とかってことじゃなくて?もうちょっと具体的に言ってもらえればアドバイスもしやすいと思うよ
104:デフォルトの名無しさん
08/01/13 22:44:18
ShowWindow( HWND, int )
105:デフォルトの名無しさん
08/01/13 23:07:42
すいません。
C# 2005 Express Editionを使っているのですが、
フォームのAcceptButtonに設定されているボタンの
クリックイベントをキャンセルするには、
どうしたらよいのでしょうか?
private void buttonOK_Click(object sender, EventArgs e)
{
if (エラーチェック)
{
エラーならキャンセル
}
以下略
というようなことがやりたいのですが、
フォームのAcceptButtonに設定されているため、
ウィンドウが消えてしまいます。
AcceptButtonに設定するのをあきらめるしかないのでしょうか?
106:デフォルトの名無しさん
08/01/13 23:20:25
うん。
107:デフォルトの名無しさん
08/01/13 23:25:55
VB6.0のフォームデザイナみたいにフォームに点が表示されて
コントロールが配置しやすくなる設定はできないんでしょうか?
108:デフォルトの名無しさん
08/01/13 23:34:01
>>107
formのプロパティーにあるよ。
109:デフォルトの名無しさん
08/01/13 23:41:20
いろんなサンプル見て調べながら、
public void myReceive (){
remoteEP = null;
udp.BeginReceive(new AsyncCallback(ReceiveCallback), null);
}
private void ReceiveCallback (IAsyncResult ar){
byte[] ReceivedBytes = udp.EndReceive(ar, ref remoteEP);
}
udpはUDPClient型
remoteEPはIPEndPoint型
こんなかんじでバックグラウンドでUDPの受信待機&受信をするコードを書いてみたんですが、受信待機状態を中断するにはどうしたらいいんでしょうか・・・良い感じのメソッドとかも見つからなくて困ってます。。。
110:デフォルトの名無しさん
08/01/13 23:42:40
>>106
むう。。。
ありがとうございます。
111:デフォルトの名無しさん
08/01/14 00:04:36
>>108
ツール→オプション→Windowsフォームデザイナ→レイアウト設定でできました
112:デフォルトの名無しさん
08/01/14 08:02:02
Windows2003R2 x64のWndProcにNM_CUSTOMDRAWが飛んでこないんですが、なんで?
x86を明示してビルドすると動くのですが
113:デフォルトの名無しさん
08/01/14 09:21:23
>>112
64bit環境ではIntPtrが64ビットになるから、これが影響してないか?
114:デフォルトの名無しさん
08/01/14 15:33:00
あるバイナリファイルの100万バイト目から10バイトだけデータが欲しいのですが、
こういう時でも律儀に100万バイト分のデータを読み込まないと取得できないのですか?
115:デフォルトの名無しさん
08/01/14 15:36:57
>>114
Seekがあるよ。
116:114
08/01/14 15:46:15
>>115
BaseStream.Seek()メソッドを利用することで取得できました
ありがとうございました
117:デフォルトの名無しさん
08/01/14 16:57:24
File.Copyメソッドについて質問です。
このメソッドを利用して、色々とコピーしてみていると、たまにエラーが出ます。
アクセス権の問題だったりするのですが、例えば
File.Copy(From, To);
このFromを読み込み可能に、Toを読み書き可能にする、というのは無理なんでしょうか?
118:デフォルトの名無しさん
08/01/14 17:00:24
質問の意味がよく分かりませんが。。。
そんな質問してると「日本語でおk」って書かれちゃうと思うぞw
119:117
08/01/14 17:04:24
えっと、こうかけばよかった
File.Copy(From,To);
この時、FromとToのアクセス権の設定の問題でエラーが出るのを回避したいです。
どうすれば良いでしょうか?
120:デフォルトの名無しさん
08/01/14 17:07:31
エラーが出ないようにチェックしてからコピーすればいいじゃまいか。
それともアクセス権を回避して無理やり書き込みたいってことか?
121:デフォルトの名無しさん
08/01/14 17:10:00
無視しようと思えば無視して横車を押せるようなアクセス権なら
そんなものに意味などないと思うんですが間違ってるでしょうか……
122:デフォルトの名無しさん
08/01/14 17:11:10
無理にというより、設定し直してやりたいです
123:デフォルトの名無しさん
08/01/14 17:13:19
>>122
同じことだと思いますが……
設定して「無理に」横車を押したい、と
124:デフォルトの名無しさん
08/01/14 17:16:07
アクセス権がないのにアクセス権を変える権利はあるのかよ。
どう考えても設定間違ってるだろw
125:デフォルトの名無しさん
08/01/14 17:16:29
それを言ったらPCの存在を否定してそうですが……
設定を変えるのは無理そうですね、ファイルアクセス権に限ってというよりファイルアクセス権だからなのかな
世のバックアップソフトは一体どうなってるんだろう
126:デフォルトの名無しさん
08/01/14 17:16:29
ふらっとなのにあげあしとりしか存在しないのかね
それも反応早いし、このスレもういらないだろ正直
127:デフォルトの名無しさん
08/01/14 17:17:23
前スレで「フォームの内容を保存」がどうのと騒いでた人ですが、
なるほど。拡張子がいかなるものであろうと、テキストファイルやHTMLファイルみたいな
テキスト主体のデータをファイルに保存するにはテキスト形式で書き出し、
画像ファイルや音楽、動画ファイルといったデータを保存するにはバイナリ形式で書き出せば良かったのですね。
あとは書き出したい内容を然る場所に書けば、と。
その節は大変お騒がせして、お恥ずかしい(*^ ^*;
(報告したかっただけなので、流してくださって構いません)
128:デフォルトの名無しさん
08/01/14 17:19:27
>>126
揚げ足取りってw
俺はそうは思わないけど、君がそう思うのなら自分の言葉に責任持てよ。
つまり揚げ足取りではない(繰り返すけど揚げ足とってるつもりないぞ)、
真面目な回答をぜひ頼むよ。
それとも自分棚上げ野郎なのか君は。
129:デフォルトの名無しさん
08/01/14 17:25:46
円の描画でつまづいています。
円の内側は塗りつぶしができるのですが,
円の外側を塗りつぶしたい時はどうしたらいいでしょうか
130:デフォルトの名無しさん
08/01/14 17:31:12
>>125
アクセス権の存在意義について考えろ。
アクセス権をオーバーライドできたらアクセス権の意味がないだろ。
バックアップソフトは普通はアドミン権限で実行する。
>>129
円の形でクリッピングして塗りつぶせばいいんじゃね?
131:デフォルトの名無しさん
08/01/14 17:38:45
>>130様
解決しました。
ありがとうございます。
勉強になりました。
132:デフォルトの名無しさん
08/01/14 17:44:37
コントロールでkeydownを所得するとき
個々のkyedownイベントでとる方法とPreviewKeyDownのどちらが良いのでしょうか?
ふつうにkeydownで所得できるようなイベントの時はどっちでも同じ?
133:デフォルトの名無しさん
08/01/14 18:49:21
所得ってなんだ…
134:デフォルトの名無しさん
08/01/14 19:31:44
スクロールのついているフォーム全体をキャプチャを目的に,
スクロールを操作してキャプチャを試みています。
コントロールを指定して画像を取得することができたのですが
スクロールは制御すらできません。
なにかよい助言をしていただけませんか?
135:デフォルトの名無しさん
08/01/14 20:31:46
>>133
また揚げ足かよ!と思ったら、その上も所得と書いてる・・・
たぶん132はガチでずっと、取得を所得と思って使ってきたんだろねw
>>132
2.0以降なら、PreviewKeyDownで取得すべき。
KeyDownは発生しないキーがある(IsInputKeyプロパティで発生可になるけど)
136:デフォルトの名無しさん
08/01/14 20:49:19
>>126
揚げ足を取られるのは、アホな質問をした場合に限られる。
まともな質問であればまともな回答が返ってくる。
とられた場合はまずは自分がアホなことを言っていないかを振り返ってみよう。
137:134
08/01/14 21:19:13
どなたかおわかりになりませんか?
いろいろ調べてみましたが,具体的にどのようにしたらいいのか
さっぱり分かりませんでした。
138:デフォルトの名無しさん
08/01/14 21:21:43
WM_SCROLL投げたら?
139:デフォルトの名無しさん
08/01/14 21:21:44
Formの背景色だけを半透明にする方法はないでしょうか?
Opacityオプションで半透明にすると、Form上のLabelなどの文字やButtonまで半透明になってしまいます。
140:デフォルトの名無しさん
08/01/14 21:25:58
>>139
TransparencyKey
141:デフォルトの名無しさん
08/01/14 21:27:47
>>139
TransparencyKeyでは完全に透明になってしまうのですが…
142:デフォルトの名無しさん
08/01/14 21:31:16
背景色をマゼンタにでもしとけば?
143:デフォルトの名無しさん
08/01/14 21:38:53
zlib(RFC1950)で圧縮されたファイルを解凍したいんだけど、C#だけでできる?
DeflateStream はRFC1951、GZipStream はRFC1952を使ってるらしくてうまく解凍できない。
他にzlibに関わるクラスも見当たらないし、もしかしてC#じゃできない?
144:デフォルトの名無しさん
08/01/14 21:40:27
正式な方法が用意されてるかどうかは知らないけど
CでできるんだったらC#でもDllImport使えばできる
145:デフォルトの名無しさん
08/01/14 22:21:36
C#でも自分でプログラム書けばできる
146:デフォルトの名無しさん
08/01/14 22:51:16
携帯からなんでURLは書けないが、Sourceforgeにzlib.netとかいうプロジェクトがある
147:109
08/01/14 23:18:31
良かったらどなたか>>109もお願いします(´・ω・)
148:デフォルトの名無しさん
08/01/14 23:26:39
受信待機状態を中断…もう少し具体的に
149:109
08/01/15 00:09:52
>>148
ありがとうございます。
具体的には、ボタンが押された時にポートを解放(?)してudpを破棄したいということです。
実装としては
udp=new UdpClient(port);としているんですが、ユーザの入力でポートを変更することも出来るようにしたいんです。
とりあえず今日いろいろ考えた末、
ポートを変更するときに呼ばれるメソッドを
public void ChangePort () {
udp.Close();
udp = new UdpClient(port);
myReceive;
}
として、無理矢理破棄して、ReceiveCallback内をtry〜catchで起こった例外を全て無視するようにして一応動いたんですが、あまりにも邪道すぎる気がします。。。
150:デフォルトの名無しさん
08/01/15 00:14:11
>>149
いやもそれでほぼオケじゃね?
例外を全て無視じゃなくて外からClose()された時の例外だけ無視するようにすれば。
151:109
08/01/15 00:36:04
>>109
あ゛・・・
これでよかったんですね。例外は基本的に全て処理するべきなのかなぁって思い込みがありました(´・ω・)
とりあえずArgumentExceptionと、タイミングによってはObjectDisposedExceptionがスローされるみたいなんで、これらを無視するようにしておきました。
ありがとうございました。
152:デフォルトの名無しさん
08/01/15 00:53:30
C#のことでなく.NET Frameworkのことですれ違いなんだけど、
C#で文法のことはいいとしてライブラリのことが知りたいんだけど
いい情報源教えてください。
URLリンク(dobon.net)
は読みました。
とりあえず
プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書) (単行本)
は買ってみようと思います、
よろしくお願いします。
153:デフォルトの名無しさん
08/01/15 01:15:19
>>152
MSDN
154:デフォルトの名無しさん
08/01/15 02:33:43
アンマネージドなリソースについてなんですが、やり直し等の機能でいつ解放
したらいいかわからないものが出てきた(ファイルとか)ので、ゴミ箱クラス作って
そこで一括管理しようと思ったのですが、対象となる変数の参照カウンタって
取得できないのでしょうか?
やっぱり自分で皮をかぶせるしかないですかね?
155:デフォルトの名無しさん
08/01/15 02:40:28
何が言いたいのかよく分からんが、
LRのガーベジコレクタは参照カウント方式じゃないぞ
156:デフォルトの名無しさん
08/01/15 02:40:59
s/LR/CLR/;
157:デフォルトの名無しさん
08/01/15 02:48:42
>>155
ありゃ、そうなんですか… orz
今ざっと調べたところ、Finalize()を積んでおけばGCが勝手に実行
してくれるみたいなんですが、どうしてもDispose出来ないときは
それでいいんですかね?
158:デフォルトの名無しさん
08/01/15 04:03:32
GC される前にランタイムが落ちるとか、結構ありそうだけどな。
ところで 「やり直し等の機能」 って何?
159:デフォルトの名無しさん
08/01/15 06:24:53
>>157
アンマネージリソースを扱うなら、必ず適切なタイミングで
Disposeを呼ぶような設計しなきゃ駄目だよ。
細かい話が多いので割愛するけど、
ファイナライザに頼るスタイルは色々問題があるのヨ。
ぶっちゃけマネージドな世界では、例えばC++において参照カウンタ式スマートポインタで
自動化できてたリソース管理の一部は使えなくなると思っていた方が良いかと。
160:デフォルトの名無しさん
08/01/15 06:30:02
VBの参考書で勉強しているのですが
Label1.Text = DirectCast(Me.PreviousPage.FindControl( _
"TextBox1"), TextBox).Text
をC#で書くにはどうしたらいいですか?
161:デフォルトの名無しさん
08/01/15 07:42:54
自己解決しましたm(_ _)m
162:デフォルトの名無しさん
08/01/15 08:30:22
>>158
ペイントなどに良くあるやり直し・元に戻す操作です。
>>159
やっぱり自前でDisposeしなきゃだめなんですね…
ちょっと基本設計見直してきます orz
163:デフォルトの名無しさん
08/01/15 14:07:03
Form1とForm2を定義して
Form1内で
Form2 f2 = new Form2();
f2.ShowDialog();
でForm2を呼び出した後にf2内のbutton_Clickイベント処理内でf2の中のテキストボックスや、コンボボックスの値をForm1で取得したいのですが
どうしたらよいでしょうか?
164:デフォルトの名無しさん
08/01/15 15:56:14
Form2がイベント公開してf2内のbutton_Clickイベントハンドラ内でfire
イベントデリゲート自分で定義してテキストやコンボボックスの値をEventArgsにつっこむか
またはプロパティで公開しとく
165:デフォルトの名無しさん
08/01/15 16:31:40
fireってなんでしょうか?ぐぐってもよくわかんないです・・・
166:デフォルトの名無しさん
08/01/15 16:39:14
イベントを起こす、ってことじゃね?
//Form2.cs
public event EventHandler HogeEvent;
private void button_Click( object sender, EventArgs e )
{
if( this.HogeEvent != nul )
this.HogeEvent( this, EventArgs.Empty ); // ← ココ
}
-------------------------------------------
//Form1.cs
...
Form2 f2 = new Form2();
f2.HogeEvent += new EventHandler( f2_HogeEvent );
...
private void f2_HogeEvent( object sender, EventArgs e )
{
//ココが呼ばれる
}
167:デフォルトの名無しさん
08/01/15 18:47:13
>>f2.HogeEvent += new EventHandler( f2_HogeEvent );
これは何をしているのでしょうか?
form1では
private void button_add_Click(object sender, EventArgs e)
{
Addition add = new Addition();
add.ShowDialog();
}
でform2(Addition)を呼び出し、手動で、form2内のテキストエリアやコンボボックスに入力してOKボタンを押す
そのとき、したのイベントに遷移して、このメソッド内で、form1内のデータグリッドを更新できないか?ということなんですが。
private void button_OK_Click(object sender, EventArgs e)
{
}
168:デフォルトの名無しさん
08/01/15 18:52:38
(´・ω・`)しらんがな
169:デフォルトの名無しさん
08/01/15 19:03:28
恥をしのんで質問いたします。
初めてコンソールアプリを作ろうとしているのですが、
エクスプローラーからコマンドプロンプトにディレクトリパスをD&Dで使わせようと思っています。
そのとき、長いフォルダ名を含む場合、絶対パスを表す文字列がダブルクォーテーションで囲まれてしまいます。
そのため、"入力文字列補正処理"を入れるようにしましたが、なんだかスッキリしません。
皆様どうやってやってますか?
以下にソースを書きます。宜しくお願いいたします。
170:169
08/01/15 19:04:04
static void Main(string[] args)
{
string[] str; //検証用変数
string Input, Output; //フォルダパス
Console.WriteLine("入力フォルダパスを入力して下さい");
//入力文字列補正
str = Console.ReadLine().Split(new char[] {'\"'});
if (str.Length == 3) { Input = str[1]; }
else { Input = str[0]; }
Console.WriteLine("出力フォルダパスを入力して下さい");
//入力文字列補正
str = Console.ReadLine().Split(new char[] { '\"' });
if (str.Length == 3) { Output = str[1]; }
else { Output = str[0]; }
if (Directory.Exists(Input) & Directory.Exists(Output))
{
Console.WriteLine("valid");
Console.ReadLine();
}
else
{
Console.WriteLine("invalid");
Console.ReadLine();
}
}
171:デフォルトの名無しさん
08/01/15 19:07:37
>>167
form2でセットするんじゃなくて、form2はセットさせたい項目をpublicなプロパティで返すようにする
form1でDialogResultをチェックしてform2のプロパティからセットするのが正解
172:デフォルトの名無しさん
08/01/15 19:07:40
Trim(char[])
173:デフォルトの名無しさん
08/01/15 19:18:45
>>167
個人で作ってるだけでプロパティ作るのが面倒くさかったら、
form2の該当の入力フィールド(textBoxとか)のModifiersをPublicにするのも手だけど
174:デフォルトの名無しさん
08/01/15 19:22:07
>>171
丁寧にありがとうございます。
>>セットさせたい項目をpublicなプロパティで返すようにする
というのがいまいちわかりません。
ソース載せます。
//form1(Main)
public partial class Main : Form
{
public Main(){
InitializeComponent();
}
private void button_add_Click(object sender, EventArgs e) {
Addition add = new Addition();
add.ShowDialog();
}
}
//form2(Additon)
public partial class Addition : Form
{
public Addition() {
InitializeComponent();
}
private void button_OK_Click(object sender, EventArgs e) {
//MessageBox.Show(textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text);
}
}
175:デフォルトの名無しさん
08/01/15 19:24:50
public partial class Addition : Form
{
public string 結果 { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; }
}
176:デフォルトの名無しさん
08/01/15 19:24:57
>>173
publicにしたら、Form1.csの補完機能からform2のコントロールが見えました!
ありがとうございます!
177:175
08/01/15 19:25:16
ミス
public string 結果 { get { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; } }
178:デフォルトの名無しさん
08/01/15 19:37:02
はじめまして。
まことに簡単な質問で恐縮なのですが、DataGridViewのculomnsのプロパティで
オートインクリメントをしたい列があるのですが、どうすればよいでしょうか?
よろしくお願いいたします。
179:デフォルトの名無しさん
08/01/15 20:33:34
>>169
な、何を言ってるのかね?
180:デフォルトの名無しさん
08/01/15 20:53:51
>>169
ただファイルを開くとかくらいなら、
ダブルクォーテーションがあっても問題なかった気がするけど。
181:デフォルトの名無しさん
08/01/16 10:43:24
>>169
dos窓でドロップやったことないのか?
スペース含むパス取り込むためにデフォルトで""囲みになるのが普通だよー
182:デフォルトの名無しさん
08/01/16 11:16:56
問題あるならTrimでもすりゃいいんでは?
183:デフォルトの名無しさん
08/01/16 11:40:31
C#でExcelを操作しようと調べているんですが、断片的な
情報しか見つける事ができませんでした。
何か参考になる本やサイトなど知っていたら紹介して貰えませんか?
184:デフォルトの名無しさん
08/01/16 12:33:03
COM Excel C# でググるとか
185:169
08/01/16 13:21:32
>>180
そうだと思ったんですが、パスを変数に格納した後にフォルダの存在確認を>>170の下の方で
行っているんですが、""つきのパスだと存在しないよって言われちゃうんですよ。
>>182
調べてみます
186:デフォルトの名無しさん
08/01/16 13:51:48
つか、D&Dできるの始めて知ったぜ。いつもいちいちコピペしてた。
187:デフォルトの名無しさん
08/01/16 14:00:08
Vistaでできないな、、、XPをリモートデスクトップで出してみたらこっちではD&Dできるが・・・
188:デフォルトの名無しさん
08/01/16 14:38:39
VS2005でC#の勉強をしています。
質問なのですが、テキストファイルに
1 200
2 356
3 1250
4 870
5 692
といったような行列があり、それをC#のプログラムで読み込み
1000以上の値を持つものだけピックアップすることはできるでしょうか。
ピックアップした後に計算もしたいので、変数にその値を代入したいのです。
よろしくお願いします。
189:デフォルトの名無しさん
08/01/16 15:00:03
StreamReaderとかで開いて
ReadLineして
パースすればいい
190:デフォルトの名無しさん
08/01/16 15:01:21
var hoge =
from line in File.ReadAllLines(@"...")
from str in line.Split(' ')
let value = Int32.Parse(str)
where value >= 1000
select value;
191:デフォルトの名無しさん
08/01/16 15:05:51
VS2005や言うてるやろスカタン
192:169
08/01/16 15:46:16
>>188
StreamReader sr = new StreamReader(filepath);
List<int[]> list = new List<int[]>();
do
{
string str = sr.ReadLine();
if (str != "")
{
string[] ary = str.Split(new char[] { ' ' });
int n1 = int.Parse(ary[0]);
int n2 = int.Parse(ary[1]);
if (n2 > 999)
{
list.Add(new int[] { n1, n2 });
}
}
}
while (sr.Peek() != -1);
193:169
08/01/16 15:51:20
どうやら手動で削除するほかなさそうですね。
splitを使って面倒なことをしてましたが、
Trim(もしくはReplaceでも可)を使って少しコードがすっきりしました。
ありがとうございました。
Console.WriteLine("入力フォルダパスを入力して下さい");
Input = Console.ReadLine().Trim(new char[] { '\"' });
Console.WriteLine("出力フォルダパスを入力して下さい");
Output = Console.ReadLine().Trim(new char[] { '\"' });
if (Directory.Exists(Input) & Directory.Exists(Output))
{
Console.WriteLine("valid");
Console.ReadLine();
}
else
{
Console.WriteLine("入力したフォルダパスが不正です");
Console.ReadLine();
}
194:デフォルトの名無しさん
08/01/16 21:00:02
オマイラそれ絶対なんか間違ってるだろwww
195:デフォルトの名無しさん
08/01/16 21:20:34
すみません、教えてください。
VS2005 .netでプログラムしていますが、HOMEPATHの取得法はあるのでしょうか?
もしあるならば方法をご教授ください。
よろしくお願いします
196:デフォルトの名無しさん
08/01/16 21:23:02
994 名前:デフォルトの名無しさん[sage] 投稿日:2008/01/11(金) 12:14:20
Environment.GetEnvironmentVariable( "HOMEPATH" );
197:デフォルトの名無しさん
08/01/16 21:27:22
\r\n と \n の差がわからないんだが
どっちも改行するわけだが動違うの?
198:デフォルトの名無しさん
08/01/16 21:31:50
>>197
サイズが違う。
199:デフォルトの名無しさん
08/01/16 21:38:14
おおまかにはOSによって改行コードが違う。
Unix:\n
Windows:\r\n
Mac:\r
ってか基本だと思うけど。
200:デフォルトの名無しさん
08/01/16 21:40:24
>>199
トンクス
Cとかだと\nが改行だから\r\nって何かと思ってたんだが
Windowsなら\r\nでいいってことでつね
201:デフォルトの名無しさん
08/01/16 21:46:35
>>200
Cは、テキストモードだと、\nは\r\nに変換される。(winでは)
202:デフォルトの名無しさん
08/01/16 21:52:10
>>196
ありがとうございました。無事解決です
203:デフォルトの名無しさん
08/01/16 22:09:14
>>200
どうでもいい話ではあるんだが意味的に言うとWinがたぶん正しい
なのでhttpとかも\r\n。この辺はCRとLFを調べてみれ
204:デフォルトの名無しさん
08/01/16 22:28:13
むかしタイプライターというものがあってのう
205:デフォルトの名無しさん
08/01/16 22:57:06
LFだけってのはおかしいと思う。
206:デフォルトの名無しさん
08/01/16 23:00:21
それ言ったらCRだけなのもおかしい
207:デフォルトの名無しさん
08/01/16 23:16:31
CRってキャリッジリターンなのは聞いたことあるけど、LFってなんて言うの?
ラインフィニッシュ?
208:デフォルトの名無しさん
08/01/16 23:20:38
ラインフィード
209:デフォルトの名無しさん
08/01/16 23:21:27
CR=キャリッジリターン=キャリッジ(紙を左右に動かす装置)を初期位置に戻すこと。
LF=ラインフィード=紙送り。
210:デフォルトの名無しさん
08/01/17 00:53:22
C#相談室から誘導されてきました。
たとえば、こういうコードがあったとします。
if (Result == null) {
transaction.Rollback();
MessageBox.Show("エラー0です。");
return false;
}
if ((int)Result == 1) {
transaction.Rollback();
MessageBox.Show("エラー1です。");
return false;
}
if ((int)Result == 2) {
transaction.Rollback();
MessageBox.Show("エラー2です。");
return false;
}
transaction.Commit();
return true;
これをスッキリ表記するのに何かいい手段はないですかねぇ…。
throwで例外起こしてtry〜catchってのもスッキリしなくて…
211:デフォルトの名無しさん
08/01/17 01:08:54
C#でLispみたいなカッコイイプログラミングするにはどうすればいいの?
212:デフォルトの名無しさん
08/01/17 01:13:40
F#をダウンロードします
213:デフォルトの名無しさん
08/01/17 01:20:46
そして卵を御飯にかけます
214:デフォルトの名無しさん
08/01/17 01:27:18
>>210
result = (Result == null) ? 0 : (int)Result;
switch(result){
case 0:
case 1:
case 2:
transaction.Rollback();
string temp = "エラー" + result + "です。";
MessageBox.Show(temp);
return false;
break;
default:
transaction.Commit();
return true;
break;
}
215:デフォルトの名無しさん
08/01/17 01:39:34
xmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?
216:デフォルトの名無しさん
08/01/17 09:07:05
C#のswitchのcaseは絶対に下に降りられないと思ってたが、何も書かなければ並べられるのか。
しかし不必要なbreakを強要されるのが面倒くさいな。
Cの文法に慣れてる人がバグを作らないようにってことなのかな。
217:デフォルトの名無しさん
08/01/17 09:10:59
returnの下のbreakいらんだろ
218:デフォルトの名無しさん
08/01/17 09:22:09
いらん以前に到達できないコードな警告出たりしないかそれ確か
219:デフォルトの名無しさん
08/01/17 13:16:16
構造体のマーシャリングについて質問いいっすか?
自分よく分かってないんですが
typedef struct tagDESKBANDINFO {
DWORD dwMask;
POINTL ptMinSize;
POINTL ptMaxSize;
POINTL ptIntegral;
POINTL ptActual;
WCHAR wszTitle[256];
DWORD dwModeFlags;
COLORREF crBkgnd;
} DESKBANDINFO;
の WCHAR wszTitle[256];って
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Unicode)]
にした上で
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=256)]
string wszTitle;
じゃないんですか?
URLリンク(www.pinvoke.net)
とかだと255になってるんですがどっちが正しいんでしょう?
220:デフォルトの名無しさん
08/01/17 13:16:55
試してみたがbreakいらんな
221:デフォルトの名無しさん
08/01/17 13:20:25
null終端とやらの関係かなとか思ったんですが
URLリンク(msdn2.microsoft.com)(VS.80).aspx
文字列のマーシャリングだと
TCHAR szCSDVersion[ 128 ];
↓
[ MarshalAs( UnmanagedType.ByValTStr, SizeConst=128 )]
String versionString;
になってるしワケワカリマセン
222:デフォルトの名無しさん
08/01/17 13:20:51
>>219
256であってる
223:219
08/01/17 13:25:09
>>222
ありがとうございます。
まじすか。
PInvoke.netのまま使ってると2バイトずつ上にずれてるってことですか?
224:219
08/01/17 13:30:11
ありゃMarshal.SizeOfを見たらどっちも同じ
さらにワケワカメ
アラインとかPackとかのせいですか?
ということは実害なし?
225:デフォルトの名無しさん
08/01/17 18:06:12
GTKについてわからないところがあるのですが、詳しい方いらっしゃいますか?
226:デフォルトの名無しさん
08/01/17 18:08:57
>>225
C#でGTKといったらMono?
Monoスレに行かないといないかもしれない。
227:デフォルトの名無しさん
08/01/17 18:11:31
そうですか…行ってみます。
すみません、ありがとうございました。
228:デフォルトの名無しさん
08/01/18 01:31:53
VC#2008関連の書籍って出ないの?
229:210
08/01/18 02:17:47
>214
ありがとうございます。
これで試してみます。
230:デフォルトの名無しさん
08/01/18 03:32:28
C#でxmlファイルをphpのsimple xmlみたいに簡単に扱える方法はないのでしょうか?
231:デフォルトの名無しさん
08/01/18 03:46:58
visual studio 2005を使ってます。
pictureboxに表示する画像のリソースを指定するときは
this***.Image = Properties.Resources.abc;
のようにしますが(というかVSが勝手にやってくれますが)
これを文字列型の変数を使ってやることはできないでしょうか?
string TMP;
TMP = "abc";
として5行目と同じように指定したいのです。
232:デフォルトの名無しさん
08/01/18 06:06:54
リフレクション使えばできると思うが、やるほどの価値はないと思う。
233:デフォルトの名無しさん
08/01/18 07:02:54
ResourceManager.GetObject使えばできるけど厳密な型指定できないよ
234:デフォルトの名無しさん
08/01/18 07:27:36
何をしたいのかを書けば、もっといい解決法があるかもよ
235:デフォルトの名無しさん
08/01/18 09:13:14
>>232
>>234
リソース名が連続した英数字なので、for文で数十の文字列の配列を作ったんですが、それをリソース名の指定に使う方法が分からなくて・・・
手動でやるよりはるかに効率的だと思うので、できればさわりだけでも簡単に教えてもらえればと
>>233
では、結局出来ないということになるんでしょうか・・・?
236:デフォルトの名無しさん
08/01/18 09:21:16
Properties.Resources.abc;の実装がどうなってるかみなよ。
237:デフォルトの名無しさん
08/01/18 10:18:33
>>230
XLinqでも使ってみれば
238:188
08/01/18 11:19:39
遅くなりましたが無事解決しました!
ありがとうございました。
239:デフォルトの名無しさん
08/01/18 15:01:23
byte[] b1 = new byte[] {1,2,3,4};
byte[] b2 = new byte[] {1,2,3,4};
があったとして、2つの配列の内容が全て等しいか簡単に調べる方法ってないですか?
b1 == b2;
も
b1.Equals(b2);
もfalseになります(´・ω・)
やっぱいちいちforeachで回さないとダメですか?
240:デフォルトの名無しさん
08/01/18 15:04:53
うむ
Array.Equals は object.Equals と変わらんからな
241:デフォルトの名無しさん
08/01/18 15:06:27
ぶ、C# 配列 比較 で検索したらすぐ見つかりました。
出来ないみたいですねorz
お騒がせしました。
242:デフォルトの名無しさん
08/01/18 15:09:45
継承クラスで共通のメソッド実行時
親クラスで共通の処理をさせたいのですがどうすればいいでしょうか
うまく説明できないんですがポリモーフィズム的なメソッドの共通処理を
継承クラスでは意識せずに親で処理させたいのですが・・・
243:デフォルトの名無しさん
08/01/18 15:24:50
//親
virtual void Hoge()
{
...
}
//子
override void Hoge()
{
...
base.Hoge();
}
じゃあかんのん?
244:デフォルトの名無しさん
08/01/18 15:27:51
>>243
やっぱりそうなりますかね
base.Hoge()の処理は必ずして欲しいのに
base.Hoge();を付け忘れちゃったりするものですから
245:デフォルトの名無しさん
08/01/18 16:21:12
Hoge は virtual じゃなくして、HogeOverridable を virtual にして
Hoge のなかで HogeOverridable を呼ぶ
ただし派生クラスで基底クラスの処理の呼び出す位置を変更できないデメリットもある
246:231
08/01/18 19:49:57
>>231ですが
URLリンク(www.atmarkit.co.jp)
を参考に
Assembly thisExe = Assembly.GetExecutingAssembly();
ResourceManager TMPres = new ResourceManager(
"***.Properties.Resources", thisExe);
xxx = (Image)TMPres.GetObject("abc");
とやったらできました。
247:デフォルトの名無しさん
08/01/18 20:10:42
Image img = (Image)Properties.Resources.ResourceManager.GetObject( "hoge" );
248:デフォルトの名無しさん
08/01/18 23:19:52
VS2008を使っていますが、
FormのFormClosingイベントを捕らえて
フォームを閉じることを中止するにはどうすればいいのでしょうか?
以下のように書いてもだめでした。
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("変更を保存しますか?", "確認",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
this.menuSaveProject_Click(sender, e);
}
else if (result == DialogResult.Cancel)
{
return; // ←これ
}
}
よろしくお願いいたします。
249:デフォルトの名無しさん
08/01/18 23:26:03
引数調べれ
250:デフォルトの名無しさん
08/01/18 23:28:22
e.Cansel = true;
とやればいいようですね(´・ω・`)
今までeなんて無視してました
ありがとうございました
251:デフォルトの名無しさん
08/01/18 23:29:03
ていうかイベントの解説に書いてるよな
252:デフォルトの名無しさん
08/01/19 00:16:31
IPAddress[] addrs;
があったとして、
この中から特定のIPの項目だけ削除ってどうすればいいんでしょうか。
InteliSenseで見てると
addrs.Except();
とかそれっぽいのはあるんですが、いまいち使い方がわかりません・・・
253:デフォルトの名無しさん
08/01/19 00:22:22
配列は要素の削除とかできないので作り直し
Array.FindAll でもいける
254:252
08/01/19 01:08:38
>>253
ありがとうございます。やっぱり作り直ししかないんですね(´・ω・)
でもFindAllのおかげでさっくりいきました。
ありがとうございました。
255:デフォルトの名無しさん
08/01/19 01:23:46
List<IPAddress>でいけー
256:デフォルトの名無しさん
08/01/19 01:24:22
>>254
List<>つかおうぜ
257:デフォルトの名無しさん
08/01/19 01:32:56
Listって要素の削除は向いてないんじゃない?
258:デフォルトの名無しさん
08/01/19 01:43:53
ほえ?
259:デフォルトの名無しさん
08/01/19 01:45:39
>>257
260:デフォルトの名無しさん
08/01/19 01:47:58
>>257
( ^ω^)・・・
261:デフォルトの名無しさん
08/01/19 02:05:44
(^ω^;)⊃ アウアウ!!
⊂ミ⊃ )
/ ヽ
262:デフォルトの名無しさん
08/01/19 02:47:03
またRemoveAll()の流れなのか・・・
263:デフォルトの名無しさん
08/01/19 05:04:38
末尾以外の削除は遅いと思うんだけど、大丈夫なわけ?
264:デフォルトの名無しさん
08/01/19 05:08:48
>>263
実装に因る
てか少なくとも配列を使うのよりは高性能に作られているとうれしい(ビクンビクン
265:デフォルトの名無しさん
08/01/19 05:10:29
>>264
実装見ろよ
266:デフォルトの名無しさん
08/01/19 05:55:24
要素の削除と挿入をやるならLinkedListでしょ?
ランダムアクセスできないけど。
267:デフォルトの名無しさん
08/01/19 06:37:57
>>266
> ランダムアクセスできないけど。
それが答えだ。
268:デフォルトの名無しさん
08/01/19 09:28:45
それは削除にむいてないんじゃなくて、
ランダムアクセスにむいてないだけ。
269:デフォルトの名無しさん
08/01/19 09:57:04
ある時点のList<T>の内容を配列か何かに保存しておき、その内容に戻すということをしたいのですが、
インスタンスを変えたくない場合は、Clearして一つずつAddし直すしかないのでしょうか?
270:デフォルトの名無しさん
08/01/19 09:58:58
要するに、コストの問題だ。
データを参照するより削除と挿入の方が多いならLinkedList だろうし、
頭からforeachしたりインデクスでアクセスする必要があるならList。
目的に応じて使い分ければ済むという当たり前のことだろ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4964日前に更新/230 KB
担当:undef