[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 07/09 19:51 / Filesize : 230 KB / Number-of Response : 995
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

ふらっとC#,C♯,C#(初心者用) Part23



1 名前:デフォルトの名無しさん [2008/01/11(金) 15:41:00 ]
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

ふらっとC#,C♯,C#(初心者用) Part22
pc11.2ch.net/test/read.cgi/tech/1197802312/

75 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:21:01 ]
前スレでさんざん水掛け論やってたな確か

77 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:24:07 ]
>>75
つ RemoveAll()

78 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:24:55 ]
そうだな。
元がListBoxだったのにそれそっちのけでなんやかややってたなw

79 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:28:20 ]
OBJとかkeyとかなぜか先頭小文字のneedDelとかvarと紛らわしいvalとか
名前ばっかり気になるw

80 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:29:35 ]
Smalltalk風ですな

81 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:34:54 ]
つうかあの時の奴と全く同じミスをしとる。 >>75
アイテムで削除すると同じキーが複数存在した場合にうまくいかんぞ。

82 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:35:17 ]
foreachは消すためには使えない
そもそも配列はAddもRemoveもできない

83 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:36:01 ]
あらしや釣りでは無いです。

>76 >78
前スレ見てきました。 C#では
ToList().ForEach(index => listBox1.Items.RemoveAt(index) );
あたりが使えそうですね。 これはつまり匿名メソッド?

>79 >80
borland (Pascal?)から来ました。 var,valとalignはテキストエディタで色分けしています。




84 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:38:43 ]
なんで素直にRemoveAll()じゃあかんの?
たしかにあのメソッド名は大変紛らわしいが、アイテムごとに条件を見て
削除するという目的にまさにぴったりなんだが。

85 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:38:50 ]
>>75
for (i = list.Count - 1; i >= 0; i--)
{
if (...)
{
list.RemoveAt(i);
}
}

こんな感じかな。

86 名前:85 mailto:sage [2008/01/13(日) 17:42:13 ]
しまった。RemoveAll()を忘れてた。


87 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:43:22 ]
>>75の言う配列というのがList<T>のことならRemoveAll一択

88 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:54:26 ]
前スレから見に戻って良かったです。前スレではRemoveAll()出てないし。

ヘルプが2割も理解できてませんが、List<T>::RemoveAllが良いのですね?
Delegateを返す関数を作ってvalueに入れる??

どうでも良い話。自分が一昔前にborlandつかってた頃のソースは小文字のみでした。
何処で聞いたんだっけな?


89 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:54:26 ]
AddやRemoveが使えてるから、配列じゃなくてList<T>なんだろうな。

table.RemoveAll(x => x.needDel)
といったところか

90 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 17:55:27 ]
>89
ありがとう。 まとまりました。

91 名前:デフォルトの名無しさん [2008/01/13(日) 18:17:25 ]
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのループで行うにはどうすればいいの?

92 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:25:38 ]
RemoveAllかなんかで削除してからその他の処理をすれば?

93 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:28:06 ]
RemoveAll厨必死杉



94 名前:デフォルトの名無しさん [2008/01/13(日) 18:28:59 ]
List<T>の各要素に対して、削除と、削除とは別の処理を、1つのforeachで行うにはどうすればいいの?

95 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:33:32 ]
forを使うといい

96 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:49:22 ]
ttp://bbs.wankuma.com/index.cgi?mode=al2&namber=10106&KLOG=23

97 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:57:39 ]
namber?

98 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 19:00:00 ]
cgiの仕様だそうだからそっとしといてやれ。

99 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 20:25:32 ]
XPの音量のプロパティのうちWaveとかの特定のものを操作したいのですが
.NETのライブラリを探してもないようです。
Win32APIを使うしかないのでしょうか?

100 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 20:32:46 ]
うん
まあちょっと検索すりゃC#ラッパとかすぐ見つかるだろうけど

101 名前:58 mailto:sage [2008/01/13(日) 20:57:10 ]
>>59
あ・・・ShowDialogって値返してたんですね(´・ω・)戻り値見る方法ですんなり解決しました。ありがとうこざいました。

102 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:43:33 ]
ウインドウを表示するにはどうすればいいのでしょうか?

103 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:10:57 ]
>>102
Form.Show();
とかってことじゃなくて?もうちょっと具体的に言ってもらえればアドバイスもしやすいと思うよ



104 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:44:18 ]
ShowWindow( HWND, int )

105 名前:デフォルトの名無しさん [2008/01/13(日) 23:07:42 ]
すいません。

C# 2005 Express Editionを使っているのですが、
フォームのAcceptButtonに設定されているボタンの
クリックイベントをキャンセルするには、
どうしたらよいのでしょうか?

private void buttonOK_Click(object sender, EventArgs e)
{
 if (エラーチェック)
 {
  エラーならキャンセル
 }
以下略

というようなことがやりたいのですが、
フォームのAcceptButtonに設定されているため、
ウィンドウが消えてしまいます。

AcceptButtonに設定するのをあきらめるしかないのでしょうか?

106 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:20:25 ]
うん。

107 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:25:55 ]
VB6.0のフォームデザイナみたいにフォームに点が表示されて
コントロールが配置しやすくなる設定はできないんでしょうか?

108 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 23:34:01 ]
>>107
formのプロパティーにあるよ。

109 名前:デフォルトの名無しさん [2008/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 名前:デフォルトの名無しさん [2008/01/13(日) 23:42:40 ]
>>106

むう。。。
ありがとうございます。

111 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 00:04:36 ]
>>108
ツール→オプション→Windowsフォームデザイナ→レイアウト設定でできました

112 名前:デフォルトの名無しさん [2008/01/14(月) 08:02:02 ]
Windows2003R2 x64のWndProcにNM_CUSTOMDRAWが飛んでこないんですが、なんで?
x86を明示してビルドすると動くのですが

113 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:21:23 ]
>>112
64bit環境ではIntPtrが64ビットになるから、これが影響してないか?



114 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:33:00 ]
あるバイナリファイルの100万バイト目から10バイトだけデータが欲しいのですが、
こういう時でも律儀に100万バイト分のデータを読み込まないと取得できないのですか?

115 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:36:57 ]
>>114
Seekがあるよ。

116 名前:114 mailto:sage [2008/01/14(月) 15:46:15 ]
>>115
BaseStream.Seek()メソッドを利用することで取得できました
ありがとうございました

117 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:57:24 ]
File.Copyメソッドについて質問です。

このメソッドを利用して、色々とコピーしてみていると、たまにエラーが出ます。
アクセス権の問題だったりするのですが、例えば
File.Copy(From, To);
このFromを読み込み可能に、Toを読み書き可能にする、というのは無理なんでしょうか?

118 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:00:24 ]
質問の意味がよく分かりませんが。。。
そんな質問してると「日本語でおk」って書かれちゃうと思うぞw

119 名前:117 mailto:sage [2008/01/14(月) 17:04:24 ]
えっと、こうかけばよかった

File.Copy(From,To);
この時、FromとToのアクセス権の設定の問題でエラーが出るのを回避したいです。
どうすれば良いでしょうか?

120 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:07:31 ]
エラーが出ないようにチェックしてからコピーすればいいじゃまいか。
それともアクセス権を回避して無理やり書き込みたいってことか?

121 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:10:00 ]
無視しようと思えば無視して横車を押せるようなアクセス権なら
そんなものに意味などないと思うんですが間違ってるでしょうか……

122 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:11:10 ]
無理にというより、設定し直してやりたいです


123 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:13:19 ]
>>122
同じことだと思いますが……
設定して「無理に」横車を押したい、と



124 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:16:07 ]
アクセス権がないのにアクセス権を変える権利はあるのかよ。
どう考えても設定間違ってるだろw

125 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:16:29 ]
それを言ったらPCの存在を否定してそうですが……

設定を変えるのは無理そうですね、ファイルアクセス権に限ってというよりファイルアクセス権だからなのかな
世のバックアップソフトは一体どうなってるんだろう

126 名前:デフォルトの名無しさん [2008/01/14(月) 17:16:29 ]
ふらっとなのにあげあしとりしか存在しないのかね

それも反応早いし、このスレもういらないだろ正直

127 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:17:23 ]
前スレで「フォームの内容を保存」がどうのと騒いでた人ですが、
なるほど。拡張子がいかなるものであろうと、テキストファイルやHTMLファイルみたいな
テキスト主体のデータをファイルに保存するにはテキスト形式で書き出し、
画像ファイルや音楽、動画ファイルといったデータを保存するにはバイナリ形式で書き出せば良かったのですね。

あとは書き出したい内容を然る場所に書けば、と。

その節は大変お騒がせして、お恥ずかしい(*^ ^*;
(報告したかっただけなので、流してくださって構いません)

128 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:19:27 ]
>>126
揚げ足取りってw
俺はそうは思わないけど、君がそう思うのなら自分の言葉に責任持てよ。

つまり揚げ足取りではない(繰り返すけど揚げ足とってるつもりないぞ)、
真面目な回答をぜひ頼むよ。

それとも自分棚上げ野郎なのか君は。

129 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:25:46 ]
円の描画でつまづいています。

円の内側は塗りつぶしができるのですが,
円の外側を塗りつぶしたい時はどうしたらいいでしょうか



130 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:31:12 ]
>>125
アクセス権の存在意義について考えろ。
アクセス権をオーバーライドできたらアクセス権の意味がないだろ。
バックアップソフトは普通はアドミン権限で実行する。

>>129
円の形でクリッピングして塗りつぶせばいいんじゃね?

131 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:38:45 ]
>>130
解決しました。
ありがとうございます。
勉強になりました。


132 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 17:44:37 ]
コントロールでkeydownを所得するとき
個々のkyedownイベントでとる方法とPreviewKeyDownのどちらが良いのでしょうか?

ふつうにkeydownで所得できるようなイベントの時はどっちでも同じ?

133 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:49:21 ]
所得ってなんだ…



134 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 19:31:44 ]
スクロールのついているフォーム全体をキャプチャを目的に,
スクロールを操作してキャプチャを試みています。

コントロールを指定して画像を取得することができたのですが
スクロールは制御すらできません。
なにかよい助言をしていただけませんか?




135 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:31:46 ]
>>133
また揚げ足かよ!と思ったら、その上も所得と書いてる・・・
たぶん132はガチでずっと、取得を所得と思って使ってきたんだろねw

>>132
2.0以降なら、PreviewKeyDownで取得すべき。
KeyDownは発生しないキーがある(IsInputKeyプロパティで発生可になるけど)

136 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 20:49:19 ]
>>126
揚げ足を取られるのは、アホな質問をした場合に限られる。
まともな質問であればまともな回答が返ってくる。

とられた場合はまずは自分がアホなことを言っていないかを振り返ってみよう。

137 名前:134 mailto:sage [2008/01/14(月) 21:19:13 ]
どなたかおわかりになりませんか?
いろいろ調べてみましたが,具体的にどのようにしたらいいのか
さっぱり分かりませんでした。

138 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:21:43 ]
WM_SCROLL投げたら?

139 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:21:44 ]
Formの背景色だけを半透明にする方法はないでしょうか?
Opacityオプションで半透明にすると、Form上のLabelなどの文字やButtonまで半透明になってしまいます。


140 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:25:58 ]
>>139
TransparencyKey

141 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:27:47 ]
>>139
TransparencyKeyでは完全に透明になってしまうのですが…

142 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:31:16 ]
背景色をマゼンタにでもしとけば?

143 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:38:53 ]
zlib(RFC1950)で圧縮されたファイルを解凍したいんだけど、C#だけでできる?
DeflateStream はRFC1951、GZipStream はRFC1952を使ってるらしくてうまく解凍できない。
他にzlibに関わるクラスも見当たらないし、もしかしてC#じゃできない?



144 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:40:27 ]
正式な方法が用意されてるかどうかは知らないけど
CでできるんだったらC#でもDllImport使えばできる

145 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:21:36 ]
C#でも自分でプログラム書けばできる

146 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 22:51:16 ]
携帯からなんでURLは書けないが、Sourceforgeにzlib.netとかいうプロジェクトがある

147 名前:109 mailto:sage [2008/01/14(月) 23:18:31 ]
良かったらどなたか>>109もお願いします(´・ω・)

148 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 23:26:39 ]
受信待機状態を中断…もう少し具体的に

149 名前:109 mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:14:11 ]
>>149
いやもそれでほぼオケじゃね?
例外を全て無視じゃなくて外からClose()された時の例外だけ無視するようにすれば。

151 名前:109 mailto:sage [2008/01/15(火) 00:36:04 ]
>>109
あ゛・・・
これでよかったんですね。例外は基本的に全て処理するべきなのかなぁって思い込みがありました(´・ω・)
とりあえずArgumentExceptionと、タイミングによってはObjectDisposedExceptionがスローされるみたいなんで、これらを無視するようにしておきました。

ありがとうございました。

152 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 00:53:30 ]
C#のことでなく.NET Frameworkのことですれ違いなんだけど、

C#で文法のことはいいとしてライブラリのことが知りたいんだけど
いい情報源教えてください。

dobon.net/
は読みました。
とりあえず
プログラミングMicrosoft .NET Framework 第2版 (マイクロソフト公式解説書) (単行本)
は買ってみようと思います、

よろしくお願いします。


153 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 01:15:19 ]
>>152
MSDN



154 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:33:43 ]
アンマネージドなリソースについてなんですが、やり直し等の機能でいつ解放
したらいいかわからないものが出てきた(ファイルとか)ので、ゴミ箱クラス作って
そこで一括管理しようと思ったのですが、対象となる変数の参照カウンタって
取得できないのでしょうか?
やっぱり自分で皮をかぶせるしかないですかね?

155 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:40:28 ]
何が言いたいのかよく分からんが、
LRのガーベジコレクタは参照カウント方式じゃないぞ

156 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:40:59 ]
s/LR/CLR/;

157 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 02:48:42 ]
>>155
ありゃ、そうなんですか… orz
今ざっと調べたところ、Finalize()を積んでおけばGCが勝手に実行
してくれるみたいなんですが、どうしてもDispose出来ないときは
それでいいんですかね?

158 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 04:03:32 ]
GC される前にランタイムが落ちるとか、結構ありそうだけどな。
ところで 「やり直し等の機能」 って何?

159 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:24:53 ]
>>157
アンマネージリソースを扱うなら、必ず適切なタイミングで
Disposeを呼ぶような設計しなきゃ駄目だよ。
細かい話が多いので割愛するけど、
ファイナライザに頼るスタイルは色々問題があるのヨ。

ぶっちゃけマネージドな世界では、例えばC++において参照カウンタ式スマートポインタで
自動化できてたリソース管理の一部は使えなくなると思っていた方が良いかと。

160 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 06:30:02 ]
VBの参考書で勉強しているのですが
Label1.Text = DirectCast(Me.PreviousPage.FindControl( _
"TextBox1"), TextBox).Text

をC#で書くにはどうしたらいいですか?

161 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:42:54 ]
自己解決しましたm(_ _)m

162 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:30:22 ]
>>158
ペイントなどに良くあるやり直し・元に戻す操作です。

>>159
やっぱり自前でDisposeしなきゃだめなんですね…
ちょっと基本設計見直してきます orz

163 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:07:03 ]
Form1とForm2を定義して
Form1内で
Form2 f2 = new Form2();
f2.ShowDialog();
でForm2を呼び出した後にf2内のbutton_Clickイベント処理内でf2の中のテキストボックスや、コンボボックスの値をForm1で取得したいのですが
どうしたらよいでしょうか?



164 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 15:56:14 ]
Form2がイベント公開してf2内のbutton_Clickイベントハンドラ内でfire
イベントデリゲート自分で定義してテキストやコンボボックスの値をEventArgsにつっこむか
またはプロパティで公開しとく

165 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 16:31:40 ]
fireってなんでしょうか?ぐぐってもよくわかんないです・・・

166 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:52:38 ]
(´・ω・`)しらんがな

169 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:03:28 ]
恥をしのんで質問いたします。
初めてコンソールアプリを作ろうとしているのですが、
エクスプローラーからコマンドプロンプトにディレクトリパスをD&Dで使わせようと思っています。
そのとき、長いフォルダ名を含む場合、絶対パスを表す文字列がダブルクォーテーションで囲まれてしまいます。
そのため、"入力文字列補正処理"を入れるようにしましたが、なんだかスッキリしません。
皆様どうやってやってますか?
以下にソースを書きます。宜しくお願いいたします。



170 名前:169 mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:07:37 ]
>>167
form2でセットするんじゃなくて、form2はセットさせたい項目をpublicなプロパティで返すようにする
form1でDialogResultをチェックしてform2のプロパティからセットするのが正解

172 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:07:40 ]
Trim(char[])

173 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:18:45 ]
>>167
個人で作ってるだけでプロパティ作るのが面倒くさかったら、
form2の該当の入力フィールド(textBoxとか)のModifiersをPublicにするのも手だけど



174 名前:デフォルトの名無しさん mailto:sage [2008/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 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 19:24:50 ]
public partial class Addition : Form
{
 public string 結果 { return textBox_name.Text+"\n"+ comboBox1.Text+"\n"+textBox1.Text; }
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<230KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef