2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
ふらっとC#,C♯,C#(初心者用) Part42
http://pc12.2ch.net/test/read.cgi/tech/1245836827/


2 :デフォルトの名無しさん:2009/07/26(日) 11:02:42
2 名前:デフォルトの名無しさん[sage] 投稿日:2009/06/24(水) 18:47:58
-----関連スレ

C#, C♯, C#相談室 Part53
http://pc12.2ch.net/test/read.cgi/tech/1245150671/

WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part4
http://pc12.2ch.net/test/read.cgi/tech/1245384489/

----参考サイト

http://www.google.co.jp/
http://msdn.microsoft.com/ja-jp/library/default.aspx
http://homepage3.nifty.com/midori_no_bike/CS/
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
http://dobon.net/vb/dotnet/
http://jeanne.wankuma.com/tips/
http://www.labasp.net/CsharpNote/

3 :デフォルトの名無しさん:2009/07/26(日) 11:04:08
OTU

4 :デフォルトの名無しさん:2009/07/26(日) 11:33:34
4ならおっぱい晒します

5 :デフォルトの名無しさん:2009/07/26(日) 11:51:08
しつもんです
親フォームを閉じたときに
子フォームを全部閉じたいのですが
どうすればいいんでしょうか?

6 :デフォルトの名無しさん:2009/07/26(日) 11:58:54
そこで悩むってことは参照の向きがおかしいんだよ
子フォームが親フォームを参照するんじゃなくて,親フォームが子フォームを参照するんだ
それなら親が子を閉じるのは何も難しくないし余計な依存もできない

7 :デフォルトの名無しさん:2009/07/26(日) 12:46:11
>>5みたいなレベルの質問もどうかと思うけど、
>>6のいう参照の向きがどうこうって話もちょっと意味不明だな。
なんでいきなりそんな話になるのかw

8 :デフォルトの名無しさん:2009/07/26(日) 13:08:16
つまり、親フォームは子フォームの存在をすべて知りうる立場にいるんだから
たとえば子フォーム作るたびに、List<Form>とかに記録しとけばいいってことだろ
で、親が閉じるとき、いちいち子フォームをClose()してけばいい

これを子フォーム視点で考えて、「親が閉じたら自分も自動的に閉じさせるには?」
とか考えはじめるとめんどくさくなる

9 :5:2009/07/26(日) 13:28:30
わかった
子formをnewした時の戻り値をlistに入れといて
それを使って消すようにする

10 :デフォルトの名無しさん:2009/07/26(日) 13:37:52
えっ?

11 :デフォルトの名無しさん:2009/07/26(日) 13:38:29
>>9
その部分だけクラス化しておくと後で再利用……しないかw

12 :デフォルトの名無しさん:2009/07/26(日) 13:58:55
C#とVB.NETってできることに差はあるんスか?

13 :デフォルトの名無しさん:2009/07/26(日) 14:06:39
どうだろね。本質的にそんな差はないと思うけど

C# - unsafeなポインタ演算ができるとか…
VB.NET - 初心者に「これならぼくにも使えそう」と淡い期待を抱かすことができるとか…

14 :デフォルトの名無しさん:2009/07/26(日) 14:09:08
なんだそれ

15 :5:2009/07/26(日) 14:46:24
親フォームから、子フォームの関数を実行させて
子フォームのほうで、this.close()すればいいのか?

16 :デフォルトの名無しさん:2009/07/26(日) 14:50:27
Form.Closeってパブリックメソットだと思うのですが

17 :デフォルトの名無しさん:2009/07/26(日) 16:54:34
UMLって使っているんですか?

18 :デフォルトの名無しさん:2009/07/26(日) 18:10:30
使いたかったら使えるし使わないと作れないわけでもない

19 :デフォルトの名無しさん:2009/07/26(日) 18:13:01
>>15
何で親フォームから子フォームのFome.Close()を直接呼ばないんだ?

20 :デフォルトの名無しさん:2009/07/26(日) 20:05:41
Ownerちゃんと設定してたら勝手に閉じるだろ


21 :デフォルトの名無しさん:2009/07/26(日) 20:07:24
Owner設定しないんなら親側でコレクションしといて普通にClose呼ぶだけ


22 :5:2009/07/26(日) 22:05:03
コレクションって
インスタンスをとっておくってこと?

普通は子ウィンドウ作って、値渡してShowして終わりってかんじだから

23 :デフォルトの名無しさん:2009/07/26(日) 22:44:14
>>22
>8で詳しく書かれている通りじゃないか。
>20,21で書かれている方法もある。
ようするにわざわざ答えを貰っているその意味が分からないレベルなんじゃないのか?

コレクションという用語の意味が分からないなら、MSDNなりチュートリアルサイトなりで自分で調べろ。
いちいち人に聞くより既に解説されていることを理解した方が早いぞ。

24 :デフォルトの名無しさん:2009/07/26(日) 23:49:16
MSDNってちょこちょこコード出てくるけどライセンスどうなってるの?

25 :デフォルトの名無しさん:2009/07/26(日) 23:52:51
好きに使えばいいよ保証しないけど
というのが正しいかどうかは保証しないよ?

26 :デフォルトの名無しさん:2009/07/27(月) 00:06:01
MSDN Terms Of Use - MSDN 使用条件
http://msdn.microsoft.com/ja-jp/cc300389.aspx

27 :デフォルトの名無しさん:2009/07/27(月) 00:24:22
コンパイルして配布するなら自由で、ソースコードが露になってる場合はライセンスのコピーを一緒に配布しなきゃいけないみたいですね

28 :デフォルトの名無しさん:2009/07/27(月) 09:41:41
Fomeってのが新鮮だった

29 :デフォルトの名無しさん:2009/07/27(月) 19:25:59
自分が作るソースはForm1.csの中にnamespace WindowsFormsApplication1があって
その中にpublic partial class Form1 : Formがあって更にその中にメソッドとかイベントを詰め込んでいます

namespaceとか別のcsファイルを作って細かく分けた方がメンテナンスには有利でしょうか?
どういうときに分けた方がいいのかいまいちよく分かりません
オープンソースの2chブラウザtwintailのソース見ると非常に細かく分けてあって俺もこういう風に書いて見たいな
とあこがれがあったりします。

30 :デフォルトの名無しさん:2009/07/27(月) 19:51:50
クラスごとに分ける
partialで分けなきゃいけないほどバカでかいクラスは作らないのが基本

31 :デフォルトの名無しさん:2009/07/27(月) 19:52:45
全部を1ソースにまとめるのが一番楽ですよ

32 :デフォルトの名無しさん:2009/07/27(月) 20:00:02
partialなのはポトペタ使ったからではないかと

33 :デフォルトの名無しさん:2009/07/27(月) 20:58:36
>>29 partialはIDEの自動コード生成が使うものであって、人が使うものでは無いと思う。


34 :デフォルトの名無しさん:2009/07/27(月) 21:25:48
>>29
原則としてクラスごとに分ける。

ただしそれほどの規模のものでなく、互いに密着して使うようなクラス群なんかは
1つのソースに書いたりする。また、クラス内クラスも使う。
ある程度の規模になったらフォルダごとに分ける。
同時にnamespaceも切る。

自分で把握できないくらいソースツリーがでかくなったときは、
まずnamespaceを切って交通整理をすることを考えると良い。

35 :デフォルトの名無しさん:2009/07/27(月) 22:56:59
namespaceはあくまで文字通り名前にすぎないのであまり意味はない
規模が大きいなら適宜プロジェクトを切ってdllに分割する

36 :デフォルトの名無しさん:2009/07/27(月) 23:28:50
プロジェクトを分けるのはコードの見通しを良くするため、というより
(確かにそういう効果も期待できなくはないが)再利用のしやすさを考えて、
というのが主な動機じゃないのかな。

再利用するつもりもないものを別プロジェクトに切り出す人はあまりいない気がするけど。

37 :デフォルトの名無しさん:2009/07/27(月) 23:49:45
重いからというのもある

38 :デフォルトの名無しさん:2009/07/28(火) 02:55:53
Program.csって何のためにあるの?

39 :デフォルトの名無しさん:2009/07/28(火) 03:41:56
あなたのため

40 :デフォルトの名無しさん:2009/07/28(火) 08:28:43
あながち間違いではないなww

ユーザのために生成されたスタートアップのコードなんだから。


41 :デフォルトの名無しさん:2009/07/28(火) 09:59:54
>>38
それが本体。

エディタで開いて見てみればわかることだが、Program.csの中にMain関数があって、
プログラムはそっからスタートするんだと思えばいい。
Windowsアプリでフォームが表示されるより前に何かやりたい時は、そこにコードを書き足す。

42 :デフォルトの名無しさん:2009/07/28(火) 10:12:49
いや、たぶんMain関数は別の場所にも置けるから、
MainしかないProgram.csって何?って聞いてるのだと思うが。

43 :デフォルトの名無しさん:2009/07/28(火) 10:26:49
デザイナ使うと生成される・・・ってそんなことはsammaryに書いてあるだろ

>アプリケーションのメイン エントリ ポイントです。

44 :デフォルトの名無しさん:2009/07/28(火) 11:37:42
>>42
何か特別な理由がない限り、Program.MainをProgram.csから
別の場所に移すケースって無いと思うんだが。

標準があって無きが如しのC/C++ならともかく、
C#はVisual Studioのやることがデファクトスタンダードだから。

45 :デフォルトの名無しさん:2009/07/28(火) 11:42:43
if文での||の使い方が分かりません

string s;
string t;
string r;
if (s == t || r)
 return;

このごく自然で人間の感覚に則した書き方がコンパイルエラー

46 :デフォルトの名無しさん:2009/07/28(火) 11:43:29
if (s == t || s == r)

47 :デフォルトの名無しさん:2009/07/28(火) 11:50:39
ty
でもそれを許可すると可読性が低下しそう
比較元は必ず一つであることを保証した>>45の書き方に死角は無かった
C# 4.0で改定されるといいですね^^

48 :デフォルトの名無しさん:2009/07/28(火) 11:52:19
自然が良ければキャンパスノートにでも書いてろ

49 :デフォルトの名無しさん:2009/07/28(火) 11:52:23
無理です
はい次の方どうぞ

50 :デフォルトの名無しさん:2009/07/28(火) 11:54:16
>>47
演算子の優先順位変えられるわけねーだろ

51 :デフォルトの名無しさん:2009/07/28(火) 11:56:39
恐怖だなw

52 :デフォルトの名無しさん:2009/07/28(火) 11:59:11
COBOLにそういう文法があって・・・
まあそういう出自の人なんだろう。

53 :デフォルトの名無しさん:2009/07/28(火) 12:02:11
>>44
MSとか他のサンプルソースでけっこうMain移してるの多いよ

54 :デフォルトの名無しさん:2009/07/28(火) 12:09:17
ジェネリック型を使ったインスタンスの生成がうまくいきません。
このような形でListの中に入れるものを変える形でジェネリック関数を定義しようとしたのですが、

エラー CS1502: 'sample.Program.BuildList(out System.Collections.Generic.List<int>)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
エラー CS1503: 引数 '1': 'out System.Collections.Generic.List<T>' から 'out System.Collections.Generic.List<int>' に変換できません。

というエラーが出てしまいます。

public List<T> Build<T>()
{
List<T> list;
BuildList(out list);
Console.WriteLine(list.Count);
return list;
}


public void BuildList(out List<int> list)
{
list = new List<int>() { 1, 2, 3 };
}

public void BuildList(out List<string> list)
{
list = new List<string>() { "a", "b", "c", };
}


55 :デフォルトの名無しさん:2009/07/28(火) 12:58:23
>>53
ファイル数を減らすためじゃね

>>54
コンパイルエラーだからインスタンス生成関係ない

56 :デフォルトの名無しさん:2009/07/28(火) 13:26:03
>>55
失礼しました。コンパイルエラーを回避する実装法が分からないんです。

57 :デフォルトの名無しさん:2009/07/28(火) 13:45:30
>>56
Build メソッドを消して BuildList を呼ぶようにすればいい。

58 :デフォルトの名無しさん:2009/07/28(火) 13:52:40
>>57
提示した再現サンプルとしてはそうなりますね。
ただ、実際はBuild作業が長く、その中で使い分けたいんです。
また、Build()とBuildList()は別クラスの中にそれぞれあります。

59 :デフォルトの名無しさん:2009/07/28(火) 14:05:10
そもそも、それは本当にジェネリック型が必要な作業なの?
BuildはList<T>を返すってなってるけど、実際にはList<int>固定だったりしない?
>>54がどこまで再現してるコードなのかはよく分からないけど

60 :デフォルトの名無しさん:2009/07/28(火) 15:04:26
半端にC++のテンプレートをかじってる感じだな。
コンパイル時に型が確定するわけじゃないのでBuildListのオーバーロードは解決できない。
あとはoutはむやみに使わないことだな。
Build側でnewして参照を渡すか、BuldListでnewするなら戻値にするべきだろう。

61 :デフォルトの名無しさん:2009/07/28(火) 15:57:10
>>45 携帯で書いてるからエラーでるかもしれんが
if (new []{t, r}.any(x => x == s))

62 :デフォルトの名無しさん:2009/07/28(火) 16:39:31
string += int が出来るのに、
string -= int が出来ないのは犯罪的な理由を孕んでいる為ですか?

63 :デフォルトの名無しさん:2009/07/28(火) 16:48:24
どうも先ほどから頭悪そうな人がいますね^^

64 :デフォルトの名無しさん:2009/07/28(火) 16:49:34
ネタをふりたいならもう少し面白いのにしろ。

文字列同士の減算をサポートしてるスクリプト言語はありそうな気がするな。
掛け算が出来るのは結構ある。

65 :デフォルトの名無しさん:2009/07/28(火) 17:00:54
"test" -= "t"
で期待される結果が
"tes"

"es"
の二通りが存在するためやっぱだめじゃね?

66 :デフォルトの名無しさん:2009/07/28(火) 17:07:42
+= が後ろへ足すならば、 -= は後ろから引くになる
これが自然な発想

67 :デフォルトの名無しさん:2009/07/28(火) 17:11:20
なんで?

68 :デフォルトの名無しさん:2009/07/28(火) 17:13:18
+=で前に足されたことある?

69 :デフォルトの名無しさん:2009/07/28(火) 17:15:15
むしろ
"test" - "a"
の方が問題じゃね?

文字列 * 数値は分かりやすいけど、数値 * 文字列だと途端に意味不明に
* なのに交換法則が成り立たないのは気持ち悪い

70 :デフォルトの名無しさん:2009/07/28(火) 17:16:36
まあ文字列の足し算は前後入れ替えると結果が変わるから特別扱いじゃないかな。
最初の、+= int だとintが文字列になって追加されるけど、-= int だとどういう結果が予測される?

71 :デフォルトの名無しさん:2009/07/28(火) 17:16:43
前に足したければ逆に書けばいい
前を引くにはどうする?

72 :デフォルトの名無しさん:2009/07/28(火) 17:17:15
自然な発想とかそういうことじゃなくて
演算子の意味とか順序はきちんと規格で決められてることなんだし

個人の直感と食い違っていても規格書に従わなきゃならない
それがコンピュータ言語

73 :デフォルトの名無しさん:2009/07/28(火) 17:20:05
掛け算は交換則が成り立つというのは思い込みだよ。

74 :デフォルトの名無しさん:2009/07/28(火) 17:26:13
x = 1
1 = x
むしろこれが出来ないならそれが成り立つ方が気持ち悪い

75 :デフォルトの名無しさん:2009/07/28(火) 17:27:55
結合則もたいがい成り立たない

76 :デフォルトの名無しさん:2009/07/28(火) 17:28:26
うるさいから俺言語でも作って喋ってろ
タコども

77 :デフォルトの名無しさん:2009/07/28(火) 17:35:44
"test" - "a"
→"test"
左辺が右辺の最後尾に存在しなかったので0の扱い

1-0
→1

78 :58:2009/07/28(火) 17:50:58
>>59
BuildList()で返すべき型が、バイナリレベルで配置が決められてる
いくつか定義したstructのひとつになっています。
今は3つの型ごとに処理関数を用意していて構築手順が3段階あるので9個定義してると。

>>60
C++のtemplateと動作原理が違うのは知ってますが、
どういう記述ができないのかのドキュメントがあまり見当たらなくて困りますね。
最初は戻り値で返していたのですがエラーが出たのでoutに切り替えたわけです。(変わりませんでしたが)
最終的にベタのbyte[]にならすので、そこの部分まで一括で行うクラスを用意した方がいいのかもしれません。

79 :デフォルトの名無しさん:2009/07/28(火) 17:59:09
public List<T> BuildList<T>() {
 if (typeof(T) == typeof(int)) return (List<T>)(object)new List<int>() { 1, 2, 3 };
 else if (typeof(T) == typeof(string)) return (List<T>)(object)new List<string>() { "a", "b", "c", };
 else throw new ArgumentException();
}
こんなふうに実行時にやってしまうことはできる
outは原則使うな

80 :デフォルトの名無しさん:2009/07/28(火) 18:15:38
何が駄目って型を解決できなきゃ全部駄目だよ
「変換できません」ってエラーが出てんだから

81 :デフォルトの名無しさん:2009/07/28(火) 18:23:20
.NETのジェネリックはコンパイル時ではなく実行時に特殊化されるから
凝ったことするには実行時にリフレクションで頑張るのが基本

82 :デフォルトの名無しさん:2009/07/28(火) 20:52:12
ジェネリックデリゲートを作って実行時にバインドしてやれば何でもありだぜ。


83 :デフォルトの名無しさん:2009/07/28(火) 21:35:13
コンパイル時にはTの部分がすべてobjectだと思えば間違いない。
制約をつければ別だけど。
それでコンパイル時にはBuildList(out List<object>) で検索に行く。
BuildList(out List<int> list)
BuildList(out List<string> list)
と順に探すが一致するのものがないのでコンパイルエラー。

84 :デフォルトの名無しさん:2009/07/28(火) 21:42:52
それは間違いだ
ジェネリックの共変・反変はサポートされていないので
BuildList(out List<object>)が仮に定義されていたとしてもコンパイルエラーになる
C#4.0でジェネリックの共変・反変が制限つきでサポートされるけどList<T>には使えないと思われる
(List<T>は書き込みが可能なので型安全性が保証できないため)

85 :デフォルトの名無しさん:2009/07/28(火) 23:23:38
入社して1年半がたった。オペレータ部署に配属されたときは絶望を感じた
ただ、仕事を始めると、どちらかというと人と多くかかわる仕事でやりがいが出てきた。
いろいろ怒られたけど、楽しいと思えた。

そして昨日、ついにその部署の廃止が決まった。廃止というより仕事が完了したから解散か・・・
明日からC#.NETをやってもらうからと告げられた。

俺が分かる言語は、MOVE、COMPUTE、PERFORMです。
オブジェクト指向?なにそれ?Java?名前は知ってる。

さて、どうするかな・・・

今日は部署移動とPCのセットアップで時間使ったが明日からやらなくてはいけない。

86 :デフォルトの名無しさん:2009/07/28(火) 23:25:29
マ板でやれ

87 :デフォルトの名無しさん:2009/07/28(火) 23:26:11
>>77
それだと
"test" + "0" が "test0" で、
"test0" - "0" が "test0" になるよ

88 :デフォルトの名無しさん:2009/07/28(火) 23:30:03
このスレは職業マに厳しいです
アマチュアが当り散らしてきます

89 :デフォルトの名無しさん:2009/07/28(火) 23:31:49
プログラマがシュミグラマに質問するしてるのもあきれるけどな

90 :デフォルトの名無しさん:2009/07/28(火) 23:47:11
加法にはゼロ元と逆元が存在するはずだが
文字列の結合を加法とした場合、
ゼロ元は空文字列だが逆元は何なのかね?

91 :デフォルトの名無しさん:2009/07/28(火) 23:47:20
まーね

92 :デフォルトの名無しさん:2009/07/28(火) 23:56:23
ネタのつもりかもしれないけど、面白くないし
数学の本質が分かってないからinterestingでもないな。

93 :デフォルトの名無しさん:2009/07/29(水) 12:55:37
メインフォームよりShowDialogで表示した自作モーダルから、更に同様に表示した別の自作モーダルを閉じると、
最初のモーダルも閉じてしまいます。
OpenFileDialog等だと大丈夫なのですが。

94 :デフォルトの名無しさん:2009/07/29(水) 13:03:07
本当かよ思って下のようなコードで試しましたが、ごくまともに普通に動作します

public partial class Form1 : Form
{
public Form1() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
Form1 f = new Form1();
f.ShowDialog();
}
}

99%なんかやらかしてます。

95 :デフォルトの名無しさん:2009/07/29(水) 15:37:27
>>94
ありがとうございます。
やらかしてました・・・。
DialogResult.OKのままでした・・・orz

96 :デフォルトの名無しさん:2009/07/29(水) 18:25:32
C# 2008EE。
Processクラスを使用しコマンドラインプログラムをcmdで起動したいのですが、
スペースを含むフォルダにあるコマンドのパイプラインを使うコマンドの起動ができません。
Process.StartInfoのArgumentsの「"」の問題と思いますが、わかりますでしょうか?
info.FileName="cmd";で、

info.Arguments = @"/c ""c\a.exe"" | ""c:\b.exe""";
がダメで、「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」になる。
info.Arguments = @"/c c:\a.exe | c:\b.exe";
info.Arguments = @"/c ""c:\a.exe""";
は成功します。@をとって\->\\、""->\"にしても同じです。よろしくお願いします。

97 :デフォルトの名無しさん:2009/07/29(水) 18:38:36
パッと見てもどこで区切れるか迷うな

""c\a.exe"" | ""c:\b.exe""

これとかどう解釈するんだろう

98 :デフォルトの名無しさん:2009/07/29(水) 18:49:27
c\a.exe これCのあとにコロンが抜けてないか?

99 :デフォルトの名無しさん:2009/07/29(水) 18:53:03
これ試したら普通に動いたぞ

"/c \"\"F:\\User\\xxxxxxxx\\Documents\\Visual Studio 2008\\Projects\\test\\test\\bin\\Debug\\test1.exe\" | \"F:\\User\\xxxxxxxx\\Documents\\Visual Studio 2008\\Projects\\test\\test\\bin\\Debug\\test2.exe\"\""

100 :デフォルトの名無しさん:2009/07/29(水) 18:54:29
>>99で動くってことはパイプ記号の前後が1つずつ多いんじゃない。

101 :デフォルトの名無しさん:2009/07/29(水) 19:03:36
実にくだらないな

102 :デフォルトの名無しさん:2009/07/29(水) 19:47:26
>>97,100
ttp://msdn.microsoft.com/ja-jp/library/362314fe.aspx
いわゆる逐次的文字列リテラルとか


個人的には>>98が正しいような気がする

103 :デフォルトの名無しさん:2009/07/29(水) 19:55:13
>>99
ありがとう!全体を更に\"さらに囲むとできました。
>>98
コロン抜けは書き損ねです。すいません。

104 :デフォルトの名無しさん:2009/07/29(水) 20:16:10
ちなみに 
間違い
 info.Arguments = @"/c ""c:\Program Files\aa.exe"" | ""c:\Program Files\bb.exe""";
正解 
 info.Arguments = @"/c """"c:\Program Files\aa.exe""  | ""c:\Program Files\bb.exe""""";
でした。お騒がせしました。

105 :デフォルトの名無しさん:2009/07/29(水) 21:47:50
最近C#始めた者ですが質問いいですか

1行n列のcsvファイルがあって、これを一行ずつdouble型の配列に収めたいのですが、
ファイル参照の後、
string path = openFileDialog1.FileName;
string[] x = File.ReadAllLines(path);
で一旦stringで確保した後でconvert.ToDouble()
する感じでいいのでしょうか。もっといいやり方ってありますか?

string[]には「”4.2274893747417E-07”」みたいな感じで入ってます。
アドバイスお願いします

106 :デフォルトの名無しさん:2009/07/29(水) 22:01:54
それでいいんじゃね
よほどでかいファイルならともかく

107 :デフォルトの名無しさん:2009/07/29(水) 22:07:40
>>105
n行1列じゃなくて?
とりあえずTextFieldParser

108 :デフォルトの名無しさん:2009/07/29(水) 22:09:12
n列あるんだったらそのままじゃ駄目じゃないの?
まあそういうこと聞いてるんじゃないんだろうとは思うが。

行が多いなら、StreamReaderで1行ずつ読みながらの方が望ましい。
楽したいならVBのTextFieldParser使うって手もなくはない。


109 :デフォルトの名無しさん:2009/07/29(水) 22:10:37
ああ、n行1列の間違いか、ならTextFieldParser使うような意味はないな。
しかしそれってCSVって言うのか?やっぱりn列あるの?

110 :デフォルトの名無しさん:2009/07/29(水) 22:11:59
csvっていうかただズラーッと数値が書かれたtxtファイルかな
それだったらそれのやり方でいいと思う

111 :デフォルトの名無しさん:2009/07/29(水) 22:22:53
ご指摘のとおりカンマ区切りが出てこないのでcsvファイルである必要は無いんですが、
そういう出力のデータなんで・・・。>>110さんのイメージが適切です。(拡張子がcsvなだけ)

あと、縦がnで、横が1です。なんかすいません。
もうちょい頑張ってみます。ありがとうございます。

112 :デフォルトの名無しさん:2009/07/30(木) 07:12:18
DataGridViewでReadOnly=falseになってるのですがセルの編集ができません
最近は表示のみで使っていてわかりませんが、最初のころは編集できたはずなのです
なにが原因かわかる方いますか

113 :デフォルトの名無しさん:2009/07/30(木) 11:30:02
すみません質問です

あるクラスの内部でスレッドを作成し、IDisposableを実装してスレッドを終了させるようにしました
しかし、明示的にDisposeを呼び出さない限り、プログラムが終了しないようです

スレッドが終了しないとアプリケーションが終了しない

アプリケーションが終了しないとDisposeが呼び出されない?

明示的にDisposeを呼び出さず、プログラム終了時に正しく解放するにはどうすればいいんでしょう

114 :デフォルトの名無しさん:2009/07/30(木) 11:31:27
>>113
パラサイトルーチンでDisposeをクロージャに内包したらよいのでは?

115 :デフォルトの名無しさん:2009/07/30(木) 11:39:18
同期オブジェクト使っちゃうのが一番手っ取り早そうだけどな

116 :デフォルトの名無しさん:2009/07/30(木) 11:45:11
>>114
C#で出来ます?探しても見つからない・・・

>>115
同期オブジェクトでどうやったら出来るんでしょうか

117 :デフォルトの名無しさん:2009/07/30(木) 11:46:19
即レスありがとうございます

118 :デフォルトの名無しさん:2009/07/30(木) 11:47:00
>>116
リフレクター使ってDisposeが呼び出されてるところの先頭アドレスを割り出す
その後main関数のアドレスも調べてオフセット値を調べ、ポインタ演算で目標アドレスを設定してDisposeを生成

119 :デフォルトの名無しさん:2009/07/30(木) 11:51:02
IsBackgroundがtrueなスレッドにしたら?

120 :デフォルトの名無しさん:2009/07/30(木) 11:57:26
そもそも、メインスレッドはほかのスレッドを終了させる義務があると思うんだが。

121 :デフォルトの名無しさん:2009/07/30(木) 12:50:21
,NET Frameworkって具体的にどのバイナリを指すの?
System*.dllとmscorlib.dll?

122 :デフォルトの名無しさん:2009/07/30(木) 13:10:19
>>121
C:\WINDOWS\Microsoft.NET\Framework内のDLLすべて

123 :デフォルトの名無しさん:2009/07/30(木) 23:56:21
ふらっとC#
fileSystemWatcherについて教えてください。
フォルダを監視して、ファイルの生成で処理をしたいのですが、ファイルの生成直後だと、ファイルができていないこともあるので、しばらくウエイトしてから処理をしたいと思います。
そこで、

private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e){
MessageBox.Show(e.FullPath);
}



private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e){
backgroundWorker_DoWork(this, DoWorkEventArgs.Empty);
}

private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e){
Thread.Sleep(5000);
MessageBox.Show(e.FullPath);
}
}

としてみたところ、eが引き継がれないことがわかりました。
backgroundWorker_DoWork(this, DoWorkEventArgs.Empty);
のIDを.Equallとかしてもだめでした。
こういう場合は、どうすればよいでしょう?


124 :デフォルトの名無しさん:2009/07/30(木) 23:57:58
>>123
まず多重継承でfileSystemWatcher_Createdメソッドをオーバーライドした後、演算子のオーバーロードで中間言語単位のウエイトをかければいい

125 :デフォルトの名無しさん:2009/07/31(金) 00:01:30
まずそれコンパイル通らないだろ

126 :デフォルトの名無しさん:2009/07/31(金) 00:02:11
質問です
decimal型って少数入れるときって、mつけますよね
decimal aaa = 0.1m;
じゃあ
decimal aaa = 1;
1はOK何でしょうか?

お願い教えてください

127 :デフォルトの名無しさん:2009/07/31(金) 00:06:08
>>126
http://msdn.microsoft.com/ja-jp/library/364x0z75%28VS.80%29.aspx

128 :デフォルトの名無しさん:2009/07/31(金) 00:09:07
早速ありがとうございます。
>>125
はい。コンパイル通りません。
>>124
初心者にはすこしむずかしすぎます。
理解できた単語は、
fileSystemWatcher_Createdメソッドをオーバーライド
ウエイトをかける
だけです。
どうしたらいいでしょう。


129 :デフォルトの名無しさん:2009/07/31(金) 00:29:57
thk127

130 :デフォルトの名無しさん:2009/07/31(金) 00:48:59
たびたびすいません質問です
Microsoft Visual C# 2008 Express Editionで参照の追加をしてクラスライブラリを参照してるんですけど
クラスライブラリの内容を変更したとき、その内容が反映される(staticなら使用できるように)のは、何をやったタイミングで
反映されるのでしょう・・・

謎です・・・

131 :デフォルトの名無しさん:2009/07/31(金) 00:58:52
クラスライブラリをビルドしてから
それを参照しているプロジェクトをリビルドすればいいんじゃね

132 :デフォルトの名無しさん:2009/07/31(金) 01:00:27
と・・いうかクラスライブラリのクラス変えたのにインテリセンスで反映されていません
クラスライブラリをビルドしたのにもかかわらず!
眠れん。。。。

133 :デフォルトの名無しさん:2009/07/31(金) 01:05:05
>>131
うまくいきません
私が、なんか勘違いしてるのかも
もういっかいやってみま

134 :デフォルトの名無しさん:2009/07/31(金) 01:11:28
>>133
クラスライブラリのビルド先パスとプロジェクトからの参照先パスは合ってる?

135 :デフォルトの名無しさん:2009/07/31(金) 01:13:45
合ってないなー多分

136 :デフォルトの名無しさん:2009/07/31(金) 01:16:27
>>134
参照先のクラスライブラリの方に問題があるみたいです
なんか元々あったクラスは見えるのに新しく作ったクラスは登録されていないみたいです
うーん
明日に持ち越します
自分はもう少しがんがッてみます

137 :デフォルトの名無しさん:2009/07/31(金) 01:22:33
参照元(Classを使う方のプログラム)のオブジェクトブラウザには出ない(汗


138 :デフォルトの名無しさん:2009/07/31(金) 01:32:21
参照先にクラス追加しました
反映されたーキター
でも、本命は反映されてないオブジェクトブラウザ見ると
なんかクラスは3個の四角が線で結ばれているが
(参照先で見える参照元では見えない)反映してほしいのには「上の絵+手紙のマークがついてる」限界だZzz


139 :デフォルトの名無しさん:2009/07/31(金) 01:34:09
わかったたぶんパブリッククラスにしてなZzz
ありがとうございますたー^^Zzz

140 :デフォルトの名無しさん:2009/07/31(金) 04:00:12
二葉亭四迷

141 :デフォルトの名無しさん:2009/07/31(金) 13:18:18
くたばってしまえ

142 :デフォルトの名無しさん:2009/07/31(金) 14:30:48
アーーーメン♪


143 :デフォルトの名無しさん:2009/07/31(金) 19:34:59
>参照
ソリューションにライブラリのプロジェクト自体を追加して依存したほうが安心。

144 :デフォルトの名無しさん:2009/07/31(金) 21:13:18
それって ファイル->テンプレートのエクスポート->「テンプレート種類の選択」 のことですか?

145 :デフォルトの名無しさん:2009/08/01(土) 20:51:55
>>144
143へのレスだったら、違う。
多分、意識しないでやっているとは思いたいけど、なんかやっていない臭がしたから。

1.ソリューションエクスプローラでは、複数の関連プロジェクトを登録できる。
  これで、アプリとライブラリのプロジェクトを纏めておく。これは基本だよな?
2.アプリのプロジェクトから参照する時はライブラリのプロジェクトを指定。
  これで、依存関係で、ライブラリプロジェクトに依存するようになる。
  ビルド順序もライブラリが先にビルドされるように注意しとくと完璧。

こうしておくとライブラリを更新していたときには自動的にアプリも再ビルドされる。
もちろんbinフォルダにもライブラリの最新アセンブリがコピーされる。
何も考えなくていいんで楽チン。

ただこれは、そういうものと思って何も考えないでこうしてるだけだから、実際は問題
あるかも。
何か問題あるなら教えてくれ。

146 :デフォルトの名無しさん:2009/08/01(土) 21:44:14
なんか、自分のオナヌーって変じゃないでしょうか、というノリだな。

147 :デフォルトの名無しさん:2009/08/01(土) 21:48:05
質問です。
マルチスレッドの中でメンバ変数を使うのですが、
その値をすべての場所で一致させるにはどうしたらいいですか?

148 :デフォルトの名無しさん:2009/08/01(土) 21:48:48
>>147
遅延評価を使って参照渡しされるポイントにブレークポイント仕掛ければいい

149 :デフォルトの名無しさん:2009/08/01(土) 21:50:57
大雑把な質問で申し訳ないんですが、
Formsの単体テストって皆さんどうやって記述してます?

デバイスに依存する部分があって、
マウスカーソルをじかに読んだりする部分もあるから
どうやって書いたらいいのか途方にくれてしまって……。

150 :デフォルトの名無しさん:2009/08/01(土) 21:51:26
147と148が何を言ってるのかまるで分からない

151 :デフォルトの名無しさん:2009/08/01(土) 21:51:59
>>149
まずは量子レベルでのテストを兼ねて世界1で実験、
その後エラーなしの世界2で実験して差分検討法で一致させてる

152 :147:2009/08/01(土) 21:54:49
1このとこで変えられたら、
その瞬間は全部の場所で同じ値に変わるというのはOKですか?

153 :デフォルトの名無しさん:2009/08/01(土) 22:00:06
>>152
だからこそ遅延評価
総称関数でパックしてやれば評価されるタイミングは関数依存
だから大丈夫

154 :147:2009/08/01(土) 22:04:26
>>153
意味わかんないです

155 :デフォルトの名無しさん:2009/08/01(土) 22:06:22
>>154
メンバ変数への参照が一箇所でも残されていれば大丈夫ということ
だから手ごろな無名関数でクロシージャ作ってやればおk

156 :147:2009/08/01(土) 22:07:07
>>155
それならわかります
パラサイトルーチンを使ってクロージャを生成すればよいのですね?

157 :デフォルトの名無しさん:2009/08/01(土) 22:11:41
こんな自作自演して何が楽しいんだ

158 :デフォルトの名無しさん:2009/08/02(日) 08:07:09
webBrowserでドキュメントの読み込みが終了したタイミング
で次の処理をするプログラムです。当然、DocumentCompleted
で次の処理をして行くのですが、そのサイトは表示後に
JavaScriptで描画している部分があって、完全に描画が終了
するまで若干のタイムラグが生じています。なので、
DocumentCompletedにそのまま記述しただけではうまく動作
しないので、今は、timerを使って次の処理のスタート時間
を遅らせていますが、スマートなやり方でないので、何か
うまい方法はないでしょうか。

159 :デフォルトの名無しさん:2009/08/02(日) 13:56:12
>>147からの流れが意味不明すぎてワロタ

160 :デフォルトの名無しさん:2009/08/02(日) 15:45:30
Adv/ノベルゲーというのは、皆が思っている以上にOVAのセルビデオに近いんだ。
既に一定の市場が確保できているからそう簡単に廃れることはない。
だが年単位で推移を見ると市場規模が倍になったり逆に半分になったりはするだろう。
すると会社を大きくできるところがあるかと思えば大手でもつぶれるところが出てくる。

161 :デフォルトの名無しさん:2009/08/02(日) 15:48:14
どこの誤爆だww

162 :デフォルトの名無しさん:2009/08/02(日) 16:28:44
アセンブリを動的ロードし使用する為に、次のコードを書いたのですが、
(A)の部分でどうすれば文字列型の引数("あいうえお")を渡せばいいか分りません。
どうすれば new Type[0] の部分に引数 "あいうえお" を指定する事が出来ますか?
※引数を渡さないメソッドの呼び出しは普通に出来ています。

string assemblyPath = @"C:TestLibrary.dll";
Assembly asm = Assembly.LoadFrom(assemblyPath);
type = asm.GetType("TestClass");
insDll = Activator.CreateInstance(type);

//TestMethodメソッドの宣言・・・(A)
MethodInfo mi = type.GetMethod("TestMethod", new Type[0]);


string getMessage = Convert.ToString(mi.Invoke(insDll, null));



163 :デフォルトの名無しさん:2009/08/02(日) 16:31:28
意味わからん。引数を渡すのは、Invoke のときだろ?

164 :デフォルトの名無しさん:2009/08/02(日) 16:32:07
なんで動的ロードはできてそんなくだらないところで躓くんだ
思い込みは捨てて全体を見ようぜ
string getMessage = Convert.ToString(mi.Invoke(insDll, null));
なんでnullを渡してると思う?

165 :162:2009/08/02(日) 16:33:07
>>163
そうなんですか。てっきり(A)の部分でしなくちゃならないと思ってました。

因みに、
string getMessage = Convert.ToString(mi.Invoke(insDll, null));
の部分でメソッドに引数 "あいうえお" を渡す場合にはどうすれば良いでしょうか?

166 :デフォルトの名無しさん:2009/08/02(日) 16:33:08
ついでに
> MethodInfo mi = type.GetMethod("TestMethod", new Type[0]);
第二引数の意味は知ってるよな?

167 :デフォルトの名無しさん:2009/08/02(日) 16:36:48
なるほどそこでエラーが出るから(A)がおかしいと考えてたのかw

168 :デフォルトの名無しさん:2009/08/02(日) 16:37:33
public Object Invoke(
Object obj,
Object[] parameters
)

だろ、ヘルプ見ろよハゲ。

new object[]{ "あいうえお" }


169 :162:2009/08/02(日) 16:40:17
引数を渡す為に次の様なコードに修正してみたのですが、
駄目でした。。。なぜ???困った。
これじゃ、動的ロードが出来ても肝心の引数を渡すが事が出来ない。。。
動的ロードしたい意味が無い。

object[] o = new object[1];
o[0] = "あいうえお";

string getMessage = Convert.ToString(mi.Invoke(insDll,o));



170 :デフォルトの名無しさん:2009/08/02(日) 16:43:00
(A) がおかしいんだろ。Type の配列じゃなくて、BindingFlags.Public でも指定しとけ。

171 :162:2009/08/02(日) 17:03:19
出来ません。。。

やっぱり引数を指定するとエラーが出ます。
自分なりに(A)(B)に色々と引数を渡す為に試してみたのですが、
ことごとく「オブジェクト参照が存在しません。」みたいなエラーが出てしまいます。
どなたか具体的に引数を渡す方法をぜひお願いします。


//(A)
MethodInfo mi = type.GetMethod("TestMethod", new Type[0]);
//(B)
string getMessage = Convert.ToString(mi.Invoke(insDll, null));

172 :デフォルトの名無しさん:2009/08/02(日) 17:15:19
サンプルでも探せよハゲ

http://www.atmarkit.co.jp/fdotnet/dotnettips/389methodinvoke/methodinvoke.html

173 :デフォルトの名無しさん:2009/08/02(日) 17:17:47
これでリフレクションによく手を出す気になったモンだなぁ

174 :162:2009/08/02(日) 18:24:59
>>172
ありがございます!!
出来ますた!!

175 :デフォルトの名無しさん:2009/08/02(日) 19:22:09
流れたので再度

webBrowserでドキュメントの読み込みが終了したタイミング
で次の処理をするプログラムです。当然、DocumentCompleted
で次の処理をして行くのですが、そのサイトは表示後に
JavaScriptで描画している部分があって、完全に描画が終了
するまで若干のタイムラグが生じています。なので、
DocumentCompletedにそのまま記述しただけではうまく動作
しないので、今は、timerを使って次の処理のスタート時間
を遅らせていますが、スマートなやり方でないので、何か
うまい方法はないでしょうか。


176 :デフォルトの名無しさん:2009/08/02(日) 19:26:17
そのサイトを出せよ

177 :デフォルトの名無しさん:2009/08/02(日) 19:30:31
無理だろ。

JavaScript の最後にイベントくっつけるくらいしかないんじゃね?

178 :デフォルトの名無しさん:2009/08/02(日) 19:33:41
同じく流れたので再度

Formsの単体テストって皆さんどうやって記述してます?

デバイスに依存する部分があって、
マウスカーソルをじかに読んだりする部分もあるから
どうやって書いたらいいのか途方にくれてしまって……。

179 :デフォルトの名無しさん:2009/08/02(日) 19:38:24
フォームは単体テストなんてやらない。

180 :デフォルトの名無しさん:2009/08/02(日) 20:05:22
そういうライブラリはあるらしいけど、
使ったことないので知らない

181 :デフォルトの名無しさん:2009/08/02(日) 23:25:37
string[] か IEnumerable<string> で部分配列を取得したいんですが、

 string[] ary = {...};
 ary.Hoge(start,length);

みたいなメソッドありますか?

182 :デフォルトの名無しさん:2009/08/02(日) 23:32:40
Array.Copy

183 :デフォルトの名無しさん:2009/08/02(日) 23:37:10
IEnumerable<T>相手ならSkipとTakeの組み合わせ

184 :デフォルトの名無しさん:2009/08/03(月) 01:14:20
.netのexeの中身が分かるツールって知ってます?
雷みたいな水色のアイコンで、
ISDN.exeみたいな名前でした

185 :デフォルトの名無しさん:2009/08/03(月) 01:16:31
それは知らんが
ildasmとReflector

186 :デフォルトの名無しさん:2009/08/03(月) 02:08:50
正規表現で次の様にHTMLページ内にある<title></title>タグの中の文字列を
変更するにはどうすればよいでしょうか?

<title>太郎</title>

<title>マイケル</title>



187 :デフォルトの名無しさん:2009/08/03(月) 02:20:33
スレ違い

188 :デフォルトの名無しさん:2009/08/03(月) 02:22:19
せめて
こうやってみたが(結果がこうなってしまった|こんな例外が出た|こんなコンパイルエラー)
ぐらいは書けよ

189 :デフォルトの名無しさん:2009/08/03(月) 09:29:42
http://www.atmarkit.co.jp/fdotnet/basics/regex02/regex02_03.html
Regex regex = new Regex(@"(<title>)(.*)(</title>)");
string s = regex.Replace(html, @"$1マイケル$3");

190 :デフォルトの名無しさん:2009/08/03(月) 12:56:41
みんな見れる? 見れなくなった。
C# と VB.NET の質問掲示板 - ASP.NET
http://bbs.wankuma.com/index.cgi

191 :デフォルトの名無しさん:2009/08/03(月) 13:04:10
わんくま掲示板が落ちているのは稀によくあること

192 :デフォルトの名無しさん:2009/08/03(月) 13:04:41
>>191
日本語でOK

193 :デフォルトの名無しさん:2009/08/03(月) 13:14:24
わんくま掲示板とブログが落ちているのはよくあること。
ああまたか、という感想しか湧かない。


194 :デフォルトの名無しさん:2009/08/03(月) 13:26:15
C#でメソッド内静的変数が使えない理由がわからないんですが…

195 :デフォルトの名無しさん:2009/08/03(月) 13:28:55
ヘジたんの趣味

196 :デフォルトの名無しさん:2009/08/03(月) 13:34:47
C風に使いだす馬鹿が出るから

197 :デフォルトの名無しさん:2009/08/03(月) 15:18:08
必要な場面があまりないからだろ。
大抵単なるstatic変数で事足りるし。


198 :デフォルトの名無しさん:2009/08/03(月) 15:37:53
オブジェクト指向的にはstatic変数で状態持つこと自体極力避けるべきなんだから
それを助長するような機能をわざわざ付けるわけがない

199 :デフォルトの名無しさん:2009/08/03(月) 18:39:30
最大の理由はマルチスレッドが普通にプログラミングモデルに組み込まれる事になったので
一撃必殺でスレッドセーフを叩き潰す関数内staticは、無い方がいいだろうって所だと見た。

200 :デフォルトの名無しさん:2009/08/03(月) 19:15:55
そういえば、VB.NETではメソッド内静的変数が使えるんだけど、
どう実装されてんのかReflectorで見たら、ものすごい力技で笑った。
基本的にはインスタンスのメンバ変数なんだけど、それをうまくメソッドローカルな静的変数に見せかけてる

201 :デフォルトの名無しさん:2009/08/03(月) 21:22:49
>200
ほーほー、スコープ的に他のメソッドから見えないようにしてるのかな?
と、尻馬に乗って試してみた。

Public Class Class1
Shared a As Integer
Dim a2 As Integer
Public Shared Sub Test()
Static Dim a As Integer
a = 0
End Sub
Public Sub Test2()
Static Dim a As Integer
a = 0
End Sub
Public Shared Property prop() As Integer
Get
Return a
End Get
Set(ByVal value As Integer)
Static Dim a As Integer
a = value
End Set
End Property

(続く)

202 :デフォルトの名無しさん:2009/08/03(月) 21:24:50
Public Property prop2() As Integer
Get
Return a
End Get
Set(ByVal value As Integer)
Static Dim a As Integer
a = value
End Set
End Property
End Class

これの結果が

Int32 a2
Int32 $STATIC$Test2$2001$a
Int32 $STATIC$set_prop2$20118$a
Static Int32 a
Static Int32 $STATIC$Test$001$a
Static Int32 $STATIC$set_prop$0118$a

という感じになる。
Static とか Int32 は区別のためにつけた。
VBだとSharedがクラス変数っぽい。

203 :デフォルトの名無しさん:2009/08/03(月) 21:26:41
おまけ

class Program {
static void Main(string[] args) {
Class1 cls = new Class1();
Type typ = typeof(Class1);
FieldInfo[] infos;
infos = typ.GetFields(BindingFlags.NonPublic
| BindingFlags.Instance
| BindingFlags.Static);
foreach (FieldInfo f in infos) {
Console.Out.WriteLine((f.IsStatic?"Static ":"") + f.ToString());
}
}
}


204 :デフォルトの名無しさん:2009/08/03(月) 21:26:56
っぽい、ってそれはMSDN見ればわかるじゃんことじゃん言っちゃ悪いがw

205 :デフォルトの名無しさん:2009/08/03(月) 21:30:50
VBのStaticはVB6にもある。
Staticがクラス変数扱いになったのはCOMの影響。

206 :デフォルトの名無しさん:2009/08/03(月) 21:32:12
Out って何? Java?

207 :デフォルトの名無しさん:2009/08/03(月) 21:34:59
1つのメソッドでしかつかわないRegexオブジェクトとかを置いときたいなと思ったことはある

208 :デフォルトの名無しさん:2009/08/03(月) 21:48:27
htmlの解析とか無理だろ・・・
Cはやめて今日からC#するってうちの教授なにかんがえてんだよ・・・
そもそも俺プログラムなんてVBAしか知らないしorz

すまん、ぐちってみた

209 :デフォルトの名無しさん:2009/08/03(月) 21:50:41
VBA → VB.NET → C#

でおk

210 :デフォルトの名無しさん:2009/08/03(月) 21:53:20
html の解析なんて、DOM ですぐじゃん。

211 :デフォルトの名無しさん:2009/08/03(月) 21:56:04
>>209
VB.NETってのをかますと勉強しやすいのか。
ってか、Cの授業自体、休憩時間とかしてたしな・・・

がんばってみるよ。そもそもHTML自体分からんのだがな。
何でも、formタグの中にある<input type="ほにゃほにゃ" name="ほにゃほにゃ2" size="30" maxlength="20">

ほにゃほにゃとほにゃほにゃ2を抜き出して表示させろだと。さて、イミフだ

212 :デフォルトの名無しさん:2009/08/03(月) 21:58:54
VB.NETなんか無意味だからやめとけ
VBAできるっていったってそんな深くまで理解して使ってるわけじゃないだろ

213 :デフォルトの名無しさん:2009/08/03(月) 22:05:02
HtmlAgilityPackとXPathでサクサクっと

214 :デフォルトの名無しさん:2009/08/03(月) 22:09:42
IEコンポ関係が一般的では?VBAでもC#でも。

215 :デフォルトの名無しさん:2009/08/03(月) 22:11:45
>>214
IEが不具合起こしたら手がつけられんからなー。
HTMLブラウジングそのものが目的じゃないんだったら避けたほうがいいんじゃないかな。

216 :デフォルトの名無しさん:2009/08/03(月) 22:15:37
mshtml がどれだけの実績あると思ってんだよ

217 :デフォルトの名無しさん:2009/08/03(月) 22:18:38
極端な話,HTMLの解析自体はHTMLが全くわからなくてもできちゃう
それよりもC#覚える方がずっと大変だからがんばれ

218 :デフォルトの名無しさん:2009/08/03(月) 22:42:53
皆さん、サンクスです・・・
いろいろなアドバイスを頂、少し前向きに取り組んで意向と思います。

input type = A
name = B
value = C

html中のA,B,Cを取得して一覧表示させればいいみたいです。
とりあえず教授の話してることメモしてるのを読み直しとこんな感じみたいです。

なにか参考書を買ってがんばってみようと思います。

WebBrowserを使えばhtmlの表示とソースの取得は出来ると教えてもらいました。
まずはその辺から組み立てていこうと思います。

219 :デフォルトの名無しさん:2009/08/04(火) 01:31:56
>>208

まじめにやると意外と大変。多分、html tidyあたりでxhtmlに変換した上で、XMLDocumentで読み込むべきかな。


220 :デフォルトの名無しさん:2009/08/04(火) 04:29:37
218の教授がWebBrowserと言っているんだからそれ使ってやろうぜ。

221 :デフォルトの名無しさん:2009/08/04(火) 08:06:45
>>218
それ、たぶん不可能だと思うんだけど・・・
教授にきちんと聞いたほうがいい。なんか聞き間違いとかあるんでない?

222 :デフォルトの名無しさん:2009/08/04(火) 09:18:32
>>221
GetElementByName
GetAttribute
InnerText
等を使えばいけると思うけど

223 :デフォルトの名無しさん:2009/08/04(火) 09:20:43
C#でMySQLに接続するプログラムを作っています。

接続の際のID、パスワードをユーザーから隠したいのですが
どのような方法がありますでしょうか?

224 :デフォルトの名無しさん:2009/08/04(火) 09:29:22
どういうレベルで隠したいわけ?

225 :デフォルトの名無しさん:2009/08/04(火) 09:58:22
>>224
すいません、どういうレベルでと聞かれるとどう答えればいいのかわからないのですが・・・。

とりあえず今、考えているのはIDやパスワードをWeb上のファイルから都度読み込んで
あくまでソース内にはIDやパスワードを入れておかないようにしようかと思っています。

他にいい方法があればと思って質問しました。

226 :デフォルトの名無しさん:2009/08/04(火) 11:01:49
>>222
いけるのか?
参考HPなにかありませんか?

227 :デフォルトの名無しさん:2009/08/04(火) 11:19:31
それjavascriptじゃない?
翻訳記事だけど、
ttp://japan.internet.com/developer/20051115/25.html
とかどう

228 :デフォルトの名無しさん:2009/08/04(火) 11:20:21
XMLだった

229 :デフォルトの名無しさん:2009/08/04(火) 11:37:18
>>226
いや
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WebBrowser1.Navigate("c:\hoge.html")
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Dim hdoc As HtmlDocument = Me.WebBrowser1.Document
Dim inputs As HtmlElementCollection = hdoc.GetElementsByTagName("input")
For Each inputElement As HtmlElement In inputs
Dim type As String = inputElement.GetAttribute("type")
Dim lvi As New ListViewItem(type)
Dim nsi As New ListViewItem.ListViewSubItem(lvi, inputElement.Name)
lvi.SubItems.Add(nsi)
Dim value As String = ""
Select Case type.ToLower()
Case "text"
value = inputElement.InnerText
Case "radio", "checkbox"
' 繝√ぉ繝・け縺輔l縺ヲ縺・k縺九←縺・°縺ョ蝣エ蜷・
value = inputElement.GetAttribute("checked")
' value縺ョ蝣エ蜷・
'value = inputElement.GetAttribute("value")
End Select
Dim vsi As New ListViewItem.ListViewSubItem(lvi, value)
lvi.SubItems.Add(vsi)
Me.ListView1.Items.Add(lvi)
Next

End Sub
という感じで組めば、リストビューにリストアップできるけど。
こういうことではないのか!?

230 :デフォルトの名無しさん:2009/08/04(火) 11:40:05
ゴメン文字化けしてたので、再レス
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WebBrowser1.Navigate("c:\hoge.html")
End Sub

Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
Dim hdoc As HtmlDocument = Me.WebBrowser1.Document
Dim inputs As HtmlElementCollection = hdoc.GetElementsByTagName("input")
For Each inputElement As HtmlElement In inputs
Dim type As String = inputElement.GetAttribute("type")
Dim lvi As New ListViewItem(type)
Dim nsi As New ListViewItem.ListViewSubItem(lvi, inputElement.Name)
lvi.SubItems.Add(nsi)
Dim value As String = ""
Select Case type.ToLower()
Case "text"
value = inputElement.InnerText
Case "radio", "checkbox"
' チェックされているかどうかの場合
value = inputElement.GetAttribute("checked")
' valueの値の場合
'value = inputElement.GetAttribute("value")
End Select
Dim vsi As New ListViewItem.ListViewSubItem(lvi, value)
lvi.SubItems.Add(vsi)
Me.ListView1.Items.Add(lvi)
Next

End Sub

231 :デフォルトの名無しさん:2009/08/04(火) 12:52:12
>>230

C#じゃなくないですか?
C#.NET開発で、自分も似たようなことで悩んでいます。
パーサーというものの使い方がいまいちわからない……

232 :デフォルトの名無しさん:2009/08/04(火) 13:00:39
VB.NETはコードの見た目がなんとなく違うだけのC#。
C#できるならVB.NETもできるようにならないともったいない。
だからってわざわざVB.NETで貼るのはどうかと思うけど。

233 :デフォルトの名無しさん:2009/08/04(火) 13:09:19
>>231
あ、そだった、すまん。C#でのソースを再レス
private void Form1_Load(object sender, EventArgs e){
this.WebBrowser1.Navigate(@"c:\hoge.html");
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlDocument hdoc = this.WebBrowser1.Document;
HtmlElementCollection inputs = hdoc.GetElementsByTagName("input");
foreach(HtmlElement inputElement in inputs)
{
string type = inputElement.GetAttribute("type");
ListViewItem lvi = new ListViewItem(type);
ListViewItem.ListViewSubItem nsi = new ListViewItem.ListViewSubItem(lvi, inputElement.Name);
lvi.SubItems.Add(nsi);
string value = "";
switch(type.ToLower())
{
case "text":
value = inputElement.InnerText;
break;
case "radio":
case "checkbox":
value = inputElement.GetAttribute("checked");
//value = inputElement.GetAttribute("value");
break;
}
ListViewItem.ListViewSubItem vsi = new ListViewItem.ListViewSubItem(lvi, value);
lvi.SubItems.Add(vsi);
this.ListView1.Items.Add(lvi);
}
}

234 :デフォルトの名無しさん:2009/08/04(火) 13:18:42
>>232
すまん。よく使う言語がVB.NETのほうだもんだから、
時々こうC#スレでVB.NETのソースをはっつけてしまうことがある。

235 :デフォルトの名無しさん:2009/08/04(火) 13:22:32
いいわけするな

236 :デフォルトの名無しさん:2009/08/04(火) 13:29:42
>>235
別に言い訳ではないんだが。

237 :デフォルトの名無しさん:2009/08/04(火) 15:41:05
フォルダ内にあるファイル名を配列に、
ファイル名順で入れたいのですが上手くいきません。

string[] fs = System.IO.Directory.GetFiles(フォルダ指定, "*.*");
Array.Sort(fs);

フォルダ内のファイルは
temp0・temp1・temp2……temp10
です。(拡張子略)

結果は
temp0・temp1・temp10・temp2……
となります。数字が二桁を超えるとおかしくなります。



238 :デフォルトの名無しさん:2009/08/04(火) 15:55:30
文字列で比較してるんだから当然の並び順になってるだけ

239 :デフォルトの名無しさん:2009/08/04(火) 15:56:43
>>237
別におかしいわけではないよ。
そもそもエクスプローラとC#(というか.net)の文字列の比較方法が異なる

どのくらい分からんのかよく分からんので、適当にぐぐった結果はってみる
ttp://dobon.net/vb/dotnet/string/stringcomparer.html
ttp://nekoaruki.com/wp/posts/programming/csharp/1159.html

240 :デフォルトの名無しさん:2009/08/04(火) 16:06:41
>>238
>>239
ありがとうございます。
まさにエクスプローラの表示順にしたかったのです。

リンク先で可能そうです。ありがとうございました。

241 :デフォルトの名無しさん:2009/08/04(火) 16:38:40
あれ、Explorerも昔はC#的な並べ替えだったよね・・・?
気のせいかな・・・

242 :デフォルトの名無しさん:2009/08/04(火) 16:46:03
XP辺りから変わった
レジストリに使用する比較関数の項目があるんで変更も可能なはず
ロジックは相当複雑

243 :デフォルトの名無しさん:2009/08/04(火) 16:49:35
>>241
intuitive sortってやつだろ。XPの目玉機能だよ

>>240
Explorerと同じにするならStrCmpLogical使うべき。

244 :デフォルトの名無しさん:2009/08/04(火) 20:47:02
>>233
記憶があいまいですまないのだが、確かフレーム分割されてるとだめだよな
違ったっけ?

245 :デフォルトの名無しさん:2009/08/04(火) 21:32:20
>>244
そんなん、frames で取ればいいだろ。
適当言うなよハゲ

246 :デフォルトの名無しさん:2009/08/04(火) 22:35:34
>>245
いや、フレームごとに取得は無理だろ
一括で取得なら可能だけど。
まぁ、>>218がどこまで作るのか知らないけど

247 :デフォルトの名無しさん:2009/08/04(火) 22:37:41
>>242-243
あーやっぱXPから変わったんですか。
ありがとう

248 :デフォルトの名無しさん:2009/08/05(水) 01:11:01
Form1からForm2を開くようにしたいのですが、
Form2は1こしか作らせない。
Form1_loadあたりで、Form2を作っておきたい。
Form2の変数をForm1でも使いたい。
どのようにすればいいんでしょうか?

249 :デフォルトの名無しさん:2009/08/05(水) 01:15:48
shingleton

250 :デフォルトの名無しさん:2009/08/05(水) 01:37:38
やりたいことは、
Form1を半分隠すみたいなかんじで、
ボタン押すと、ぴーって出るみたいな
できないかな?

251 :デフォルトの名無しさん:2009/08/05(水) 01:45:26
>>246
いや、可能だよ
foreach (HtmlWindow f in this.webBrowser1.Document.Window.Frames)
{
HtmlDocument hdoc = f.Document;
// 以下略
}

252 :デフォルトの名無しさん:2009/08/05(水) 01:51:27
トイレ逝け


253 :デフォルトの名無しさん:2009/08/05(水) 06:16:53
GetAttributeでいける


foreach (HtmlElement element in all_Input)
{

if (element.GetAttribute("type") == "hidden")
{
name = element.GetAttribute("name");

value = element.GetAttribute("value");



}


}


254 :デフォルトの名無しさん:2009/08/05(水) 12:08:12
フレーム分割してるページのソースとかも同じやり方でできるのかな?

255 :デフォルトの名無しさん:2009/08/05(水) 18:14:54
数ヶ月に1つのプログラミングをするぐらいなんだけど
dataGridViewなど設定や扱いが面倒なのは
以前どういう風に設定したのか忘れてしまって
(項目のコピペや自動で列が追加されないようにしたりなど)
毎回一から解説サイトとかを回って調べているのが激しく無駄な気がして

こういうことにならないように、あらかじめ設定したコントロールを
追加するだけで他のプロジェクトでも簡単に使える方法はないでしょうか?
例えば、
dataGridView.SelectRetuCopy()
dataGridView.SelectRetuDelete();
など毎回同じような動作をする機能をあらかじめ盛り込んでおきたいのです

256 :デフォルトの名無しさん:2009/08/05(水) 18:22:46
コード・スニペットはどう?

257 :デフォルトの名無しさん:2009/08/05(水) 18:41:16
>>255
既存のコントロールを継承した独自のコントロールクラスを定義して、
それをフォームデザイナーで使ったりは普通にできるよ。

258 :デフォルトの名無しさん:2009/08/05(水) 18:53:53
Buttonコントロールで影が付く条件を教えてください
既定のボタンを表している影だと思うのですが、出てこなくなりました

259 :デフォルトの名無しさん:2009/08/05(水) 19:18:36
FormのAcceptButtonとCancelButtonのことか?

260 :デフォルトの名無しさん:2009/08/05(水) 19:46:01
AcceptButtonで影付いてたんですね
ありがとうございました

261 :デフォルトの名無しさん:2009/08/05(水) 19:51:19
>>260
テキストボックスにUSB入力してボタンクリックしたらIEで表示させることって可能ですか?

262 :デフォルトの名無しさん:2009/08/05(水) 19:54:54
エスパー召喚質問過ぎる

263 :デフォルトの名無しさん:2009/08/05(水) 19:59:04
>>262
すみません。USBでなくURLでつ…

264 :デフォルトの名無しさん:2009/08/05(水) 20:04:17
FileSystemWatcherでテキストファイルの生成を監視しているとき、テキストファイルだと、2回生成したとメッセージが表示されるのですが、原因と回避策を教えてください。
private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e){
MessageBox.Show("created!")
}


265 :デフォルトの名無しさん:2009/08/05(水) 20:04:31
可能姉妹

266 :デフォルトの名無しさん:2009/08/05(水) 20:09:06
>>265
出来ましたらヒントかなにかを……

267 :デフォルトの名無しさん:2009/08/05(水) 20:14:10
>>266
グーグルの使い方ぐらい覚えた方がいいよ
http://www.google.com/search?as_q=c%23+IE+%E8%B5%B7%E5%8B%95&num=100&hl=ja&ie=UTF-8&oe=UTF-8&btnG=Google+%E6%A4%9C%E7%B4%A2&as_epq=&as_oq=&as_eq=&lr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=

268 :デフォルトの名無しさん:2009/08/05(水) 20:32:11
>>267
ありがとうございます。
少し甘えすぎていました。すみません。

269 :255:2009/08/05(水) 20:35:04
>>256
>>257
どうもありがとうございます

皆さんはこういう場合どうしているんでしょうか?
毎回form1でガリガリ書いちゃうのかな
それとも継承したコントロールクラスを作ったりするのでしょうか?

270 :デフォルトの名無しさん:2009/08/05(水) 20:46:39
DataViewを作成してRowFilterを設定しようとしています。
フォーム上のテキストボックスで入力された文字列で
「フィールド」の列をあいまい検索しようとしています。

DataView dv = new DataView(datatable);
dv.RowFilter = "フィールド like '*" + テキストボックス.Text + "*'";

この時に、特殊な文字列が入っているとエラーになります

[]%\<>+|^'"

だから、Replaceメソッドを使ってあらかじめ[]でそれらの文字をくくってやろうと
しました。

Joken = Joken.Replace("[", "ESCAPETemporary");
Joken = Joken.Replace("]", "[]]");
Joken = Joken.Replace("ESCAPETemporary", "[[]");
Joken = Joken.Replace("%", "[%]");
Joken = Joken.Replace("\\", "[\\]");
Joken = Joken.Replace(">", "[>]");
Joken = Joken.Replace("<", "[<]");
Joken = Joken.Replace("+", "[+]");
Joken = Joken.Replace("|", "[|]");
Joken = Joken.Replace("^", "[^]");
Joken = Joken.Replace("'", "''");

たのですが、くくってやるとエラーは出ないのですが検索にかかりません。
これらの文字をエスケープする方法を教えて下さい。
また、エスケープするのにわざわざReplaceでこうやって置き換える以外の方法があったら教えて下さい。

271 :デフォルトの名無しさん:2009/08/05(水) 21:03:17
教えてあげないよ

     _,∩_         _,∩_           _,∩_
    (_____)ゝ、     (_____)    y     (_____)
    / :: :: :: ヽ 〉     /-‐:: ::‐-ヽ /       / :: :: :: ヽ
   _./ (・ )ll(・ ) ∨     _/  0) i! 0) ∨      _/ ( ・)i!(・ ) ゙、_
 // :: :: ∈ゝ :: ::ヽ   // ::  ‐-‐ :: ヽ    //  :: ー一 :: ヽ\
. ゝ/:: :: ::  :: :: ::ヽ  ゝ/ :: ::  ::  :: :: ヽ   ゝ/ :: ::  ::  :: :: ヽく
   ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄
       |     |             |     |             |     |
    ⊂!     !つ        シ!     !つ        ⊂!     !つ

ジャン♪

272 :デフォルトの名無しさん:2009/08/05(水) 21:12:51
>>270
LIKE演算子に使う文字列で[]使ってエスケープする必要があるのは[*%だけだぞ
'もエスケープが必要だがこれは'をもう一つ重ねることでエスケープする
String.Replaceで良いんじゃね Regex.Replace使っても良いけど

273 :デフォルトの名無しさん:2009/08/05(水) 21:13:12
コピペ君って馬鹿だな、まで読んだ。

274 :デフォルトの名無しさん:2009/08/05(水) 21:32:58
>>270
そういうのはクエリのサニタイズと呼ばれる。
普通は入力値は直接テキスト処理せず、DBライブラリ側に処理させる。
C#だとどうやるのかは知らんけど、データソースオブジェクトを使ったらクエリ書く必要すらないんじゃね?

275 :270:2009/08/05(水) 22:13:59
>>272
指摘されてあらためてヘルプをよく読んだら、
フィールド名に使ってたらエスケープしないといけない文字列と
データの中でエスケープしないといけない文字列は違うということがわかりました。
[*%'
についておっしゃるとおりエスケープしたらうまくいきました。
ありがとうございました。

最初に想定していたよりも文字数が減ったのでReplaceでやることにします。

276 :デフォルトの名無しさん:2009/08/05(水) 22:30:34
VB厨で申し訳ないのですが、
VBのFormat、FormatNumber関数に相当するメソッドを
ご存知の方おられたら教えてください。
数値を三桁カンマ区切りにしたいというのが目的です。

277 :デフォルトの名無しさん:2009/08/05(水) 22:31:41
>>276
string.Format()

278 :デフォルトの名無しさん:2009/08/05(水) 22:38:11
int.ToString(string)

279 :デフォルトの名無しさん:2009/08/05(水) 23:37:58
1234567890.ToString("N0")

280 :デフォルトの名無しさん:2009/08/06(木) 01:34:46
foreachでbreakで抜けなくてもいい場合にbreak使わないで全部回すってどうですか?

281 :デフォルトの名無しさん:2009/08/06(木) 01:40:34
言ってることがよくわからないが推測で答えると場合によるとしか言えない。


282 :デフォルトの名無しさん:2009/08/06(木) 01:43:16
breakで抜けなくてもいい場合ならbreakを使っちゃダメでしょ。当然全部回る。

で?

283 :デフォルトの名無しさん:2009/08/06(木) 02:07:19
一つだけ抽出する場合に決まってんだろオタンコナス!

284 :デフォルトの名無しさん:2009/08/06(木) 02:11:48
エスパーでも太刀打ち出来ないだと!?

285 :デフォルトの名無しさん:2009/08/06(木) 02:12:03
それならEnumerable.Firstの述語を引数に取るほうを使えばいい。

286 :デフォルトの名無しさん:2009/08/06(木) 03:06:27
>>280
next

287 :デフォルトの名無しさん:2009/08/06(木) 08:23:28
お前達は何を言っているんだ・・・

288 :デフォルトの名無しさん:2009/08/06(木) 10:15:15
nextでふと思ったが、、、continue のことか?

289 :デフォルトの名無しさん:2009/08/06(木) 10:23:46
現在、あるソフトの試用版を製作中です。
試用版ということなので、メインの機能の回数制限をつけようと思っているのですが
残り回数をレジストリに書き込んだ場合、ユーザーに書き換えられてしまう危険性がありますよね?
これをユーザーから編集不可にする方法はありますか?

290 :デフォルトの名無しさん:2009/08/06(木) 10:44:33
ないよ

291 :デフォルトの名無しさん:2009/08/06(木) 10:48:44
回数限定版ではなく機能限定版を考えてみてください

292 :デフォルトの名無しさん:2009/08/06(木) 10:49:54
>>290
>>291
やはりそうですか。
機能限定版、もしくは正規版の機能充実に時間を使います。

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

293 :デフォルトの名無しさん:2009/08/06(木) 10:52:49
暗号化すればある程度は大丈夫だけど削除されたら元も子もないし
完璧な方法はないかも

究極はそもそもその機能を入れてないバージョンを別に作ることだがそれだと試用できないな

294 :293:2009/08/06(木) 10:54:09
既に回答されてて泣いた

295 :デフォルトの名無しさん:2009/08/06(木) 11:36:15
ユーザーのPCはユーザーの管理下にあるから、まっとうな方法で確実なのは無理だね。
ネット使って認証とかのレベルでやらないと無理。

296 :デフォルトの名無しさん:2009/08/06(木) 12:06:00
webBrowserで表示しているページをボタンクリックしたらIEで表示させる。
こんなの作りたかったけど難しい。
URLって簡単には取得できないのね。
舐めてたわ

297 :デフォルトの名無しさん:2009/08/06(木) 13:01:34
現在表示されてるURLはプロパティから直接取れる。
ページ変移もNavigatingイベントで拾える。

298 :デフォルトの名無しさん:2009/08/06(木) 14:18:12
>>297
例えば、グーグルとかで日本語検索したページをIEで表示させるとURLに検索文字が直接はいってしまう。
あと、フレーム分割されてるようなページだとうまくURL取得出来ないです

299 :デフォルトの名無しさん:2009/08/06(木) 15:32:56
>>298
後者は WebBrowser.Document.Window.Frames.Item(int) でなんとかできると思う
前者は日本語でおk

300 :デフォルトの名無しさん:2009/08/06(木) 15:53:23
URLエンコードしたいんじゃね

301 :デフォルトの名無しさん:2009/08/06(木) 16:07:41
Uri.OriginalStringの事か?

302 :デフォルトの名無しさん:2009/08/06(木) 16:40:12
Aというフォームを起動させて、あるボタンを押せば
Aを閉じてBというフォームを表示させたいんですが、どうすればいいでしょうか?

Aを閉じるとアプリケーション自体終了したり、AのVisibleをfalseにしたままだと
Bを閉じたときに、Aは非表示なだけで終了はしていませんよね?

303 :デフォルトの名無しさん:2009/08/06(木) 16:47:22
・AはHideにしておいて、BのClosedイベントでAも終了する
・ApplicationContextを使ってMainFormを差し替える
・Application.Run(new B())する前にAをShowDialogで表示する

304 :デフォルトの名無しさん:2009/08/06(木) 17:03:53
>>303
ありがとうございます。

305 :デフォルトの名無しさん:2009/08/06(木) 21:09:45
c#EE2008

datagridviewを継承した独自のコントロールを
デザイナの左にあるコンポーネントに追加する方法ありますか?

コントロールのサイズを視覚的に調整したいので・・

306 :デフォルトの名無しさん:2009/08/06(木) 22:01:03
>>305
なーんか言ってることが意味不明だな、と思うのはたぶん俺だけじゃないと思う。

307 :デフォルトの名無しさん:2009/08/06(木) 22:13:14
>>305
同じプロジェクトならビルドすればいい
違うプロジェクトなら参照に加えればいい

308 :デフォルトの名無しさん:2009/08/06(木) 22:21:58
ああ、>>307を見てやっと意味が分かった

309 :296:2009/08/06(木) 22:24:07
frameはDocumentCompletedの最後にメインページが読み込まれるみたいで意識しないでいいみたいです
>>299さんのコード使わずとも何とかなりました。
ただ、JavaScriptで描画している部分はどうにもならない・・・
こればっかりは仕方ない見たいですね。

学校ではJava習ってるんで、C#を自主でやろうかな〜と思ってタブブラウザもどきを作っています。

310 :305:2009/08/06(木) 22:50:05
>>307
ビルドすれば左のコンポーネントのところに表示されるのですか?
継承しただけだと無理だと思うんだけど
継承したクラスを作ってその後どうすればいいんでしょうか?

311 :デフォルトの名無しさん:2009/08/06(木) 23:04:20
それだけで出るけど?

312 :デフォルトの名無しさん:2009/08/06(木) 23:17:00
試してみたが、普通に表示されるぞ?
VS2005 Standard でだが。

using System.Windows.Forms;

namespace MyControl {
public class MyDataGridView : DataGridView {
}
}


313 :デフォルトの名無しさん:2009/08/06(木) 23:18:08
ふと・・・public付け忘れなんてオチは却下だ。

314 :デフォルトの名無しさん:2009/08/06(木) 23:28:22
DataGridViewを継承って使い道が全く思いつかないんだが
外から弄り放題だからコンポーネントとしては失格だし

315 :296:2009/08/07(金) 00:12:14
>>309
JavaScriptか・・・
専門学校のときに似たようなの作らされたっけ
なんか、

url = e.Url.ToString();

これでurlを取得しようとしたら、なんかJavaScript:false:
こんなわけ分からん値が取得してた気がする。面倒になって他の奴に投げたがなんだったんだろう。

316 :デフォルトの名無しさん:2009/08/07(金) 00:28:08
WPFで、一般的なペイントツールを作ろうと思ったら、カンバス部分はどう実装するの?
はじめからInkCanvasが用意されてるけど、これと似た自前のクラスを作ることになるのかな

317 :305:2009/08/07(金) 00:37:53
>>314
弄り放題すぎて目的の関数見つけるのが大変なんです

318 :デフォルトの名無しさん:2009/08/07(金) 00:42:44
WiiRemoteについての質問です

wiiリモコンとバランスボードを制御するとき
どちらか片方ずつなら制御できたのですが
両方を同時に制御するにはどうすればいいですか?

319 :デフォルトの名無しさん:2009/08/07(金) 01:21:19
個別のライブラリに関しては提供元もしくは専用のフォーラムで聞いてください。

320 :デフォルトの名無しさん:2009/08/07(金) 08:18:32
DataGridViewを継承したやつって
実体はなんなの?
DLL?
Formにぺこって貼り付けるやつって、実体はなんですか?

321 :デフォルトの名無しさん:2009/08/07(金) 08:25:13
>>320
フォームデザイナーは見た目をいじるだけ。
あくまで出来上がるのはC#のソースコード。
ソースコードに何が書かれているかをよく見てご覧。

いくつか質問してるが、ソースコードに全部書いてある。

322 :デフォルトの名無しさん:2009/08/07(金) 09:35:02
抽象クラスとインターフェースって似てると思いますが、インターフェースで出来ないことを抽象クラスでやるってことなんでしょうか?

323 :デフォルトの名無しさん:2009/08/07(金) 10:24:52
>>332
それくらいググりなさいよっ、初心者のくせにっ!
http://blog.shos.info/archives/2005/02/c_tips_interface_abstract_clas.html

324 :デフォルトの名無しさん:2009/08/07(金) 10:37:34
機能は似ているが由来が違うと思えばいい。
インターフェイスという概念は必ずしもオブジェクト指向ではない。

325 :デフォルトの名無しさん:2009/08/07(金) 12:09:59
>インターフェイスという概念は必ずしもオブジェクト指向ではない。
そうか?
interfaceではstaticメソッドが作れないわけだから、
interfaceを使うと出来上がるものが必ずオブジェクトになると思うんだが?

326 :デフォルトの名無しさん:2009/08/07(金) 12:51:05
C#のinterfaceというキーワードは完全にクラス周辺の仕組みの一部。
ただし他から借りてきた概念だといいたいわけさ。
APIだってインターフェイスだがWin32APIはオブジェクト指向じゃないだろ。
COMやCORBAのインターフェイスになるとオブジェクト志向の風味が漂ってくる。
いわゆる分散オブジェクト。

327 :デフォルトの名無しさん:2009/08/07(金) 13:25:46
どう考えてもC#のインターフェースについて聞いてるだろ

328 :デフォルトの名無しさん:2009/08/07(金) 13:43:14
>>322
抽象クラスじゃできないことをインターフェースでやる場合もあるだろ
多重継承とか

329 :デフォルトの名無しさん:2009/08/07(金) 21:11:20
補色ってどう作ればいいのかな。

330 :デフォルトの名無しさん:2009/08/07(金) 21:15:15
>>329
補色っていってもいろいろ定義がありそうだけど、
一番普通のは単にRGBの1の補数でいいんじゃないの?

331 :デフォルトの名無しさん:2009/08/07(金) 21:17:06
>>330
なるほど。thx。

332 :デフォルトの名無しさん:2009/08/07(金) 23:22:32
C#でHPをローカルに保存するようなプログラムは作成可能でしょうか?
フレームに分かれていないページなら、CSSと画像などを気にしなければ簡単に作成することが出来ました。
ただ、フレーム分割されているページにも対応したプログラムの作成方法が分からず、そもそも出来るのかと頭を抱えています

333 :デフォルトの名無しさん:2009/08/07(金) 23:32:40
できなかったらIEだのFirefoxだのはどんな魔法を使ってるというのか

334 :デフォルトの名無しさん:2009/08/07(金) 23:36:00
テクマクマヤコンテクマクマヤコン

335 :デフォルトの名無しさん:2009/08/08(土) 00:03:56
WinFormsにおいて
ウィンドウがリサイズされたとき
子のコントロールがそれに合わせてリサイズしたり移動したりするには
どうすればいいでしょうか

336 :デフォルトの名無しさん:2009/08/08(土) 00:06:39
抽象的で答えにくいが
取り敢えずDockとかAnchorとかを使うとか

337 :デフォルトの名無しさん:2009/08/08(土) 04:05:46
ひょっとして
Image img = Properties.Resources.Image1;
のように、画像リソースを取得した場合って
img.Dispose();
しないとダメだったりする?

338 :デフォルトの名無しさん:2009/08/08(土) 04:42:24
>>337
不要

339 :デフォルトの名無しさん:2009/08/08(土) 04:46:44
>>338
行った場合って何か不都合が生じたりする?

340 :デフォルトの名無しさん:2009/08/08(土) 06:51:29
する

341 :デフォルトの名無しさん:2009/08/08(土) 09:16:54
>>333
どうやって実装するばいいのか分からず悩んでいます。

HtmlDocument doc = webBrowser1.Document ;
textBox2.Text = doc.GetElementsByTagName("html")[0].OuterHtml ;

メインページのhtmlしか取得できません。

342 :デフォルトの名無しさん:2009/08/08(土) 09:20:52
frameタグを見ろ

343 :デフォルトの名無しさん:2009/08/08(土) 09:30:26
Button_Clickの内容をFormクラスに書くのっておかしくないですか?
Buttonがクリックされた時の処理はButtonが持っているべきだと思うのですが、これがVisual C#というものの特性なのでしょうか?

344 :デフォルトの名無しさん:2009/08/08(土) 09:30:30
DOM に window.frames があるんだからそっちのほうがいいだろ

345 :デフォルトの名無しさん:2009/08/08(土) 09:33:00
>>343
ん?Controlだろ?

346 :デフォルトの名無しさん:2009/08/08(土) 09:35:06
>>343
全然おかしくない。いわゆる「処理の移譲」ってやつ。
JavaをはじめほとんどのGUIライブラリはこの考え方をもとにして設計されている。

347 :デフォルトの名無しさん:2009/08/08(土) 09:56:22
つまり、機能毎に新しいButtonカスタマイズクラスを書け、ということだろうか

348 :デフォルトの名無しさん:2009/08/08(土) 10:04:36
Buttonは「クリックされた」を検知するだけのもので,具体的な処理を行うのはフォームだろ。
単純に考えれば,ボタンがクリックされたらButtonがフォームの「ボタンが押された時の処理」
を行うメソッドを呼び出すのが自然だけど,それではButtonが特定のフォームに依存してしまうので
それをうまく切り離すのが「委譲」の考え方。

349 :デフォルトの名無しさん:2009/08/08(土) 10:14:36
>>343
マウスがクリックされたときの動作を
ココのアプリケーションが実装するのはおかしいって言ってるようなもんだぞ。



350 :デフォルトの名無しさん:2009/08/08(土) 10:21:14
>>343は良い質問
初心者ではなさそうだけど

351 :デフォルトの名無しさん:2009/08/08(土) 10:29:36
まあ、「家=Form」だけあっても、「ドア=Control」が無ければ
「家に入る=Event」というのは実現できないわけだし、
「ドア」単体には、そもそも「家に入る」というイベントを実現することは出来ない
というわかるようでわからない説明してみる

352 :デフォルトの名無しさん:2009/08/08(土) 11:02:31
昔のjavaのAWTが確か派生クラスで処理を書く形式じゃなかったかな?
で欠点が多かったから委譲モデルに変更された。
C#というか.NETのイベントはまさに委譲モデル。


353 :デフォルトの名無しさん:2009/08/08(土) 11:30:51
>>342
>>344

各フレームの情報が見たいのではなく、あくまでしたいのはwebbrowserで表示しているページのローカル保存です。

WebページをMHT形式(.mhtファイル)で保存するには?[C#、VB]
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/690createmht/createmht.html

こんなの見つけたのでもう少しがんばってみようと思います

354 :デフォルトの名無しさん:2009/08/08(土) 11:36:25
取り敢えずHTMLの仕組みぐらいは知っといた方が良いよ

355 :デフォルトの名無しさん:2009/08/08(土) 11:51:09
>>354
あぁ、何か的外れなことをしようとしてるみたいですね。私。

VBAで表計算の自動化くらいしかしたことがなく、突然webのダウンロードソフトを作ってといわれてかなりテンパっています。
少し落ち着いて、考え直していこう「と思います。

理想。
1,IEの名前をつけて保存のようにメインページは任意の名前で保存
2,フレーム分割されているようなページの場合、それぞれを保存する。

こんな感じです。2のフレームページの保存は当然それぞれのhtml名で保存しなければいけないんですが・・・
難しいですね。プログラミングって。

356 :デフォルトの名無しさん:2009/08/08(土) 12:05:45
保存するだけならばwget使えばいいじゃん

357 :デフォルトの名無しさん:2009/08/08(土) 12:48:26
>>340
なんで?

358 :デフォルトの名無しさん:2009/08/08(土) 13:16:39
>>357
共同風呂で他人が入っている可能性があるのに電気消す馬鹿がどこにいる

359 :デフォルトの名無しさん:2009/08/08(土) 13:32:08
それは一見同じ風呂だが実は別の風呂

Resourcesの画像プロパティ参照するごとに毎回新しいインスタンスが作られてるよ
だからDisposeもやっとかないとメモリが無駄に食われる可能性がある

360 :デフォルトの名無しさん:2009/08/08(土) 13:44:01
>>359
ResourceManager.GetObjectを使ってるようだから、それも不正解。
毎回は作られない。
長く使用されずにGCで回収されてしまった場合や
意図的にDisposeされた場合は再ロードが発生する。

361 :デフォルトの名無しさん:2009/08/08(土) 13:54:10
>>360
Resources.Image1 == Resources.Image1
がfalse返したり、
using (var g = Graphics.FromImage(Resources.Image1)) {
    // 適当に描画
}
this.BackgroundImage = Resources.Image1
で描画がまるで無視されたりするけど?

362 :デフォルトの名無しさん:2009/08/08(土) 13:59:51
>>361
下は意図的にDisposeしてるんじゃないの?

363 :361:2009/08/08(土) 14:00:31
ごめんなんでもない

364 :363=362≠361:2009/08/08(土) 14:01:31
>>363>>362>>361じゃない

もう寝る。

365 :デフォルトの名無しさん:2009/08/08(土) 14:01:41
>>362
そりゃGraphicsはDisposeしてるがそれは全く関係ないだろ

366 :デフォルトの名無しさん:2009/08/08(土) 15:10:39
どうでもいいが、”例え”は余計分らんw

367 :デフォルトの名無しさん:2009/08/08(土) 16:36:28
MSDNを見た感じは>>360だけど
実際に動かすと>>359なので
同一インスタンスであるという保証も同一でないという保証もないという前提にして、
フォームのロードと同時にリソースを読み込んでフォームのメンバにキャッシュする。
Disposeはしないという使い方をしている。


368 :デフォルトの名無しさん:2009/08/08(土) 16:44:21
>>365
>>367
まーその辺は、1MBくらいの大きめの画像をループで1000回くらい呼び出して
メモリの消費量がどうなるか眺めればよさそうですな。

369 :デフォルトの名無しさん:2009/08/09(日) 01:10:05
webBrowserコントロールでMouseDownやMouseMoveのイベントハンドラーを実行したいのですが
規定のイベントには定義されていないみたいです。
どうにか実行できないでしょうか?

370 :デフォルトの名無しさん:2009/08/09(日) 03:35:25
マイクロソフトのサイトで初心者向け10行で出来るシリーズだったと思うのですが、
デスクトップにカレンダーを表示するアプリの作成ページがあったと思うのですが、
どなたかURLを覚えている人いませんか?
探したけど見つからない。

371 :デフォルトの名無しさん:2009/08/09(日) 03:39:38
>>203
インデントをずらせ!化す!!

372 :デフォルトの名無しさん:2009/08/09(日) 07:54:35
サイトを見ていたら、
ソースの中に
[ReadOnly(true)]とか
 [Category("新規カテゴリ")]

という行がありました。
上記の"[   ]"
はどういうケースに使うのですか?


373 :デフォルトの名無しさん:2009/08/09(日) 07:59:24
>>369
http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserMouseDownEvent.htm

374 :デフォルトの名無しさん:2009/08/09(日) 08:00:08
フルで入れちゃった。
h抜いてると思ってくれ

375 :デフォルトの名無しさん:2009/08/09(日) 09:06:49
>>373
VBですか
何書いてるのかサッパリです^^

376 :デフォルトの名無しさん:2009/08/09(日) 09:54:47
>>372
それは属性という機能。
http://ufcpp.net/study/csharp/sp_attribute.html

377 :デフォルトの名無しさん:2009/08/09(日) 17:02:05
アドバイスお願いします。
WPFである条件のときだけチェックボックスを表示したいです。
Formとおなじように、.csに、
if ( ) checkBox.Hide();
else checkBox.Show();
と書いたところ、
'System.Windows.Controls.CheckBox' に 'Hide' の定義が含まれておらず、型 'System.Windows.Controls.CheckBox' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
といわれました。

CheckBox chetkBox = new CheckBox();
checkBox.Hide();
としてもだめでした。

checkBox.Visibility = Hidden;
では、
名前 'Hidden' は現在のコンテキスト内に存在しません。

checkBox.Visibility = "Hidden";
では、
型 'string' を型 'System.Windows.Visibility' に暗黙的に変換できません。
でした。
どうすればいいでしょう?


378 :デフォルトの名無しさん:2009/08/09(日) 17:09:44
checkBox1.Visibility = Visibility.Hidden;

379 :デフォルトの名無しさん:2009/08/09(日) 17:18:32
<CheckBox Name="..." 
XamlのName属性は何になってる?

380 :デフォルトの名無しさん:2009/08/09(日) 17:22:24
そもそもそのコードでは checkBox というインスタンスが…
いや、何でもない。

381 :デフォルトの名無しさん:2009/08/09(日) 17:32:15
>>378
ありがとうございます。
できました。


382 :デフォルトの名無しさん:2009/08/09(日) 18:25:08
ひょっとして、ずれてるかもしれませんがご容赦ください。
fileSystemWatcherのファイルの生成の捕捉について教えてください。
IE7.0でファイルをダウンロードして、それを契機にアクションしたいと思います。
private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e){//処理}
で監視しているのですが、ダウンロードのときだと、うまく監視できません。
別のフォルダから移動してくると、監視に成功します。
IEのダウンロードの場合は、Createdでは監視できないんですか?


383 :デフォルトの名無しさん:2009/08/09(日) 18:38:58
取り敢えず名前を付けて保存時はちゃんと反応するな

384 :デフォルトの名無しさん:2009/08/09(日) 19:11:32
テキストボックスのハイトやパディングを自由に指定できないのはなぜ?
見栄えのいいフォームができないじゃないか。
C#ってこの程度のもんだったんだ…。

385 :デフォルトの名無しさん:2009/08/09(日) 19:13:47
WPF使うか自前で描画しろ

386 :デフォルトの名無しさん:2009/08/09(日) 19:18:51
>>384
大丈夫、君ならJavaでもC++でも見栄えの良いフォームを作れないさ

387 :デフォルトの名無しさん:2009/08/09(日) 19:30:16
>>383
ありがとうございます。
それでできないのですが、なぜでしょう?
もうすこし考えてみます。

388 :デフォルトの名無しさん:2009/08/09(日) 19:48:53
WPFよりWindowsフォームアプリケーションが勝る点はどこですか?
…女子高なので聞いても誰も知りません。

389 :デフォルトの名無しさん:2009/08/09(日) 20:15:01
.Net2.0でも動くこと。WPFはXPのsp2以降とか条件が厳しくなるので
使えるユーザーが限定されてしまうことかな。


390 :デフォルトの名無しさん:2009/08/09(日) 20:24:07
殆どのユーザーはXPSP2以降なので問題なし

391 :デフォルトの名無しさん:2009/08/09(日) 21:01:21
星形のウィンドウズフォームってどうやって作るのでしょうか?

392 :デフォルトの名無しさん:2009/08/09(日) 21:03:15
>>389
ありがとう。
では、WPFの方がこれから主流になるのかな。

393 :デフォルトの名無しさん:2009/08/09(日) 21:06:10
>>391
ttp://dobon.net/vb/dotnet/form/formregion.html
ココ見ればできる

394 :デフォルトの名無しさん:2009/08/09(日) 21:06:32
>>391
Regionプロパティつかう

395 :デフォルトの名無しさん:2009/08/09(日) 21:08:12
>>393
そこは見ましたが多角形のフォームが作れないんですよ

396 :デフォルトの名無しさん:2009/08/09(日) 21:14:50
見たけど作れないってどういう事よ

397 :デフォルトの名無しさん:2009/08/09(日) 21:18:26
あれを見てわからないなら、素直にあきらめろよ。

398 :デフォルトの名無しさん:2009/08/09(日) 21:26:18
うるせえだまれ

399 :デフォルトの名無しさん:2009/08/09(日) 21:28:19
やだよーん

400 :デフォルトの名無しさん:2009/08/09(日) 21:32:02
>>396
Point[] points ={ new Point(0, 0), new Point(100, 300), new Point(200, 400),
new Point(300, 300), new Point(200, 200)
};

System.Drawing.Drawing2D.GraphicsPath path =
new System.Drawing.Drawing2D.GraphicsPath();
path.AddPolygon(points);

this.Region = new Region(path);

こんな感じにやってみたけど

401 :デフォルトの名無しさん:2009/08/09(日) 21:41:00
多角形は作れてるじゃないか

402 :デフォルトの名無しさん:2009/08/09(日) 21:43:00
BorderStyle を none にしてないとか

403 :デフォルトの名無しさん:2009/08/09(日) 21:43:48
ポリゴンの意味を理解しろよ。
Point[] points =
{new Point(100, 400),
new Point(300, 300),
new Point(500, 400),
new Point(400, 200),
new Point(600, 100),
new Point(400, 100),
new Point(300, 000),
new Point(200, 100),
new Point(000, 100),
new Point(200, 200)};
こんな感じ。
あと types とフォームのサイズも増やしとけよ。


404 :デフォルトの名無しさん:2009/08/09(日) 21:46:47
ペンタゴンなら…

405 :デフォルトの名無しさん:2009/08/09(日) 21:48:05
いろいろ作ったらさ
SS見せてほしいんだけどw

406 :デフォルトの名無しさん:2009/08/09(日) 21:53:01
>>403
typesは関係ないのでは?

407 :デフォルトの名無しさん:2009/08/09(日) 22:05:49
>>406
pts 配列内の対応する各点の型を指定する PathPointType 列挙体の要素の配列。
の数と、増やした点の数って一致して無くてもいいの?

408 :デフォルトの名無しさん:2009/08/09(日) 22:24:43
営業日報システムをC♯で作りたいけど、
テキストボックスの高さが自由になりません。
皆さんはどう工夫してますか?

409 :デフォルトの名無しさん:2009/08/09(日) 22:29:50
ふつうにやってるけど?

410 :デフォルトの名無しさん:2009/08/09(日) 22:32:44
MultLineをonにしる

411 :デフォルトの名無しさん:2009/08/09(日) 22:33:30
>>408
textBox.Multiline = true;

412 :デフォルトの名無しさん:2009/08/09(日) 22:46:54
マルチラインをオンにして、さらに縦方向の位置を中央にすることはできますか?

413 :デフォルトの名無しさん:2009/08/09(日) 22:51:39
>>412
何に対する何の位置が中央?

414 :デフォルトの名無しさん:2009/08/09(日) 22:55:24
Forms に HorizontalAlignment はあるのに何で VerticalAlignment が無いんだろう・・・

415 :デフォルトの名無しさん:2009/08/09(日) 22:58:26
>>413
垂直方向に対するテキストの位置。
うまく言えなくてごめん。

416 :デフォルトの名無しさん:2009/08/09(日) 23:02:30
テキストボックスに垂直位置という概念は普通ないだろ
位置固定するならテキストボックス使う意味ないじゃん

417 :デフォルトの名無しさん:2009/08/09(日) 23:06:47
だいたい、VerticalAlignmentが仮にあったとしてだ
常に垂直位置を中央に固定しておくと言うことは行数が増減する度に
テキストボックスの垂直方向のサイズを伸縮しなければ
追加した最後の行がコントロール内に収まらないだろ

418 :デフォルトの名無しさん:2009/08/09(日) 23:19:03
それを言うなら、HorizontalAlignment にも言えることではないか?

419 :デフォルトの名無しさん:2009/08/09(日) 23:20:17
常に水平位置を中央に固定しておくと言うことは桁数が増減する度に
テキストボックスの水平方向のサイズを伸縮しなければ
追加した最後の桁がコントロール内に収まらないだろ

420 :デフォルトの名無しさん:2009/08/09(日) 23:25:02
ちなみに、412の言いたいことが分かるから俺も疑問に感じた。
あれだろ、Officeの縦位置。

421 :デフォルトの名無しさん:2009/08/10(月) 00:38:47
>>420
そういう疑問を感じる自分に疑問を感じようよ。

目的が全然違う。
ワードやエクセルの表セルやテキストボックスは、
(最終的に印刷されることを意識した)の文字列のレイアウトを
制御するためにある。

Windows FormのTextBoxは、あくまでユーザーからの文字入力を受け付けるためのもの。

422 :デフォルトの名無しさん:2009/08/10(月) 01:49:37
>>421
別に、垂直方向に中央があってもいいだろ。
目的とか関係なく。
見映えを考えたらやりにくくて仕方ないんだよ。

423 :デフォルトの名無しさん:2009/08/10(月) 04:18:30
16x16の画像2000枚を描画しなきゃならんのだが、どうにも遅い。
大量の画像の描画を高速にするにはどうしたらいい?

424 :デフォルトの名無しさん:2009/08/10(月) 04:28:16
描画が遅いってどうやって検証した?

425 :デフォルトの名無しさん:2009/08/10(月) 04:58:02
>>424
なるほど。
試しにDrawImage無くしても時間変化しなかった。
他の要因だ。thx。

426 :デフォルトの名無しさん:2009/08/10(月) 05:22:26
結局、メモリケチろうとWeakReference使ってたのがダメだったっぽい。

427 :デフォルトの名無しさん:2009/08/10(月) 06:52:25
背景変えたPanelの真ん中に枠線消したTextBoxでも置けばいんじゃね

428 :デフォルトの名無しさん:2009/08/10(月) 08:03:15
パネルの中にラジオボタンをたくさん配置し、けど、全て選択することも可能にすることはできますか?

429 :デフォルトの名無しさん:2009/08/10(月) 08:17:25
なぜチェックボックスではだめなのかね

430 :デフォルトの名無しさん:2009/08/10(月) 08:17:34
パネルの中にパネルなどを置いてその中にボタンを入れればおk

431 :デフォルトの名無しさん:2009/08/10(月) 11:15:10
だから見た目を重視するならWPF使えと

432 :デフォルトの名無しさん:2009/08/10(月) 12:10:37
>>429
ラジオボタンで統一させたいんです。
ところで、これからはWPFの時代が来そうですか?
今からVSを学ぶならばWPFでしょうか。

433 :デフォルトの名無しさん:2009/08/10(月) 12:33:51
>>430
その方法じゃチェックを外すことは出来ないぞ。

>>432
なんでラジオボタンで統一するんだ?
複数チェックが可能ならチェックボックスにすべきだろ。

434 :デフォルトの名無しさん:2009/08/10(月) 12:42:26
>>433
パネルの中にパネルを碁盤上に敷き詰めて、
1つ1つにラジオボタンを入れたらできる?

435 :デフォルトの名無しさん:2009/08/10(月) 12:51:04
>>432
チェックボックスの□をラジオボタンの○にするような事が簡単にできる。
WPFやるのはWinFormsを使い慣れてからでも遅くはない。その頃にはVS2010出てるだろうしね。

436 :デフォルトの名無しさん:2009/08/10(月) 12:59:34
>>428
AutoCheck = falseにすれば普通にできるよ。
まあ、常識があれば出来てもやらないし、やるべきでないと思うけど。

ただし、その場合当然Clickイベント拾ってコードでCheckedを制御する必要がある。

437 :デフォルトの名無しさん:2009/08/10(月) 13:02:33
あと、ラジオボタンをコンテナの子コントロールにしない(Zオーダーを上にして、
コンテナの上に配置する)って方法もある。

まあ、これも普通はやらんよね。

438 :デフォルトの名無しさん:2009/08/10(月) 17:59:17
>>434
そんなのはImageをセットしたラベルやボタンを使うことをお勧めしたい。
ラジオボタンにこだわる必要が全くない。

439 :デフォルトの名無しさん:2009/08/10(月) 18:32:36
現状WPFは初心者にはお勧めできない。
必要な情報は自分でMSDN読んで調べられるようでないと無理。
それに,C#に加えてGUIデザイン専用の別の言語を覚えないといけない。

440 :デフォルトの名無しさん:2009/08/10(月) 19:00:48
>>439
確かになー。
オレも大概初心者レベルだが、オープンソースの色々なプロジェクトのソースコードを眺めてるけど
WPFで書かれたフォームは見たことないな。(IronPython Studioのプロジェクトを除く)

WPFはSliverlightで必須だったりExpressionでデザインできたりって話は聞くけど……ううむ。

441 :デフォルトの名無しさん:2009/08/10(月) 19:22:56
単純にうちのボロPCじゃ重いってのでやる気がな…

442 :デフォルトの名無しさん:2009/08/10(月) 19:42:03
WPFの本を勃ち読みしたが、
どの本の例文にもhttp……microsoft…みたいなwebアドレスが冒頭に記載されていた。
しかし、どの本もその説明がなかった。
あのアドレスは一体何?

解説書が解説の役目を全く果たしていない。

443 :デフォルトの名無しさん:2009/08/10(月) 19:46:49
それは質問なのかただの愚痴なのか?

444 :デフォルトの名無しさん:2009/08/10(月) 19:49:24
XAMLの名前空間かなんかかしら

445 :デフォルトの名無しさん:2009/08/10(月) 19:58:40
>>443
質問です。
あのアドレスは何を意味しているのですか?

446 :デフォルトの名無しさん:2009/08/10(月) 20:01:55
>>445
http://msdn.microsoft.com/ja-jp/library/ms747086(VS.80).aspx

447 :デフォルトの名無しさん:2009/08/10(月) 20:26:55
ttp://www.atmarkit.co.jp/fdotnet/dotnettips/428screencapture/screencapture.html

private void button1_Click(object sender, EventArgs e)
{
Rectangle rc = this.Bounds;

Bitmap bmp = new Bitmap(
rc.Width, rc.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmp))
{
g.CopyFromScreen(rc.X, rc.Y, 0, 0,
rc.Size, CopyPixelOperation.SourceCopy);
}
}

このような形で取得した画像をEXCELに貼り付け保存したいのですが、どのようなコードを書けばいいのでしょうか?
上記のサイトを参考に、スクリーンショットは取得でいるようになったのですが、EXCELとの連携がうまくいきません。

448 :デフォルトの名無しさん:2009/08/10(月) 20:41:30
ttp://hanatyan.sakura.ne.jp/vbhlp/Excel12.htm
VB6の記事だがまあ参考になるんじゃない

449 :デフォルトの名無しさん:2009/08/10(月) 22:15:53
this.BackColor = Color.Red;
this.TransparencyKey = Color.Red;
label1.BackColor = Color.Transparent;

と設定して、
label1.Imageに黒から透明のグラデーションのPING画像を設定すると、
透明の部分が赤色になります。
どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?

450 :デフォルトの名無しさん:2009/08/10(月) 22:33:47
>>449
君は自分自身でも何がやりたいのかよく分かってないのと違う?
何がいいたのかよくわからんけど。

451 :デフォルトの名無しさん:2009/08/10(月) 22:39:39
で、その透明部分が何色になっていればいいんだ?

452 :デフォルトの名無しさん:2009/08/10(月) 22:46:18
>>451
フォームも透明にしてるんだし透明ですよ

453 :デフォルトの名無しさん:2009/08/10(月) 23:09:23
>>452
意味の分からんこと言ってないでググれ。
http://blogs.wankuma.com/youryella/archive/2007/10/15/102151.aspx

454 :デフォルトの名無しさん:2009/08/10(月) 23:15:03
>>452
抜き色を赤に設定してるんだから、赤っぽい色は透過されないに決まってるだろ。

455 :デフォルトの名無しさん:2009/08/10(月) 23:20:51
>>454
だからそれが出来ないのかなと聞いたんですけど?

456 :デフォルトの名無しさん:2009/08/10(月) 23:23:31
>>449
真面目な話、そもそも君が何がをやりたいのかサッパリ伝わってないと思うから、
そこをきちんと分かるように説明しないと、出る答えも出ないと思うけど。

457 :デフォルトの名無しさん:2009/08/10(月) 23:26:16
>>456

>どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?
>どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?
>どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?

458 :デフォルトの名無しさん:2009/08/10(月) 23:28:47
だから453
TransparencyKeyはARGB完全一致してる色のみの透過

459 :デフォルトの名無しさん:2009/08/10(月) 23:35:24
>>457
だから黒から透明のグラデーションってどういう意味だ、って聞いてるんだがな・・・
っていうか、こっちは親切心で聞いてるのにそういう態度取るのかよ。
人間のクズだなお前さんは。

460 :デフォルトの名無しさん:2009/08/10(月) 23:40:26
>>457
>453 で書かれてるやりかたはお前のやり方と全然違うだろ。
ソースコード見てから話をしろ。

461 :デフォルトの名無しさん:2009/08/10(月) 23:48:50
>>459
こんなん
ttp://uproda.2ch-library.com/158662c61/lib158662.jpg

462 :デフォルトの名無しさん:2009/08/10(月) 23:59:42
すいません上げなおしました
ttp://uproda.2ch-library.com/158665Eu5/lib158665.jpg

463 :デフォルトの名無しさん:2009/08/11(火) 00:10:23
コントロールのImageプロパティは透過色をサポートしてないんじゃ?

464 :デフォルトの名無しさん:2009/08/11(火) 00:26:31
>>442
XMLもわからないのにWPFに手を出すのが間違ってる
WPFはこれまでのノウハウが通用しないし
深く理解しようとするとDirect3Dの知識が必要になったりして結構難しいんだよな

465 :デフォルトの名無しさん:2009/08/11(火) 00:28:55
教えて君もそうだが、教える方も偉そうだよな
オマエら本当に分かってレスしてるのか?w

466 :デフォルトの名無しさん:2009/08/11(火) 00:30:19
俺はわかってる事しかレスしない
偉いだろ?

467 :デフォルトの名無しさん:2009/08/11(火) 00:31:13
>>462
ウィンドウの透明度を部分的に変える、なんてベタな方法では無理だろうね。
ググってたらこういうのがあった。
Win32APIのUpdateLayeredWindowを使うらしい。
あまりお手軽ではなさそうだ。
http://yellow.ribbon.to/~azumaya/doc_dotnet_uplayeredwnd.php

468 :デフォルトの名無しさん:2009/08/11(火) 00:48:28
>>465
お前が親切丁寧に教えてやれよ。気が付いたら代わりに実装してたなんて事になっても知らんけど

469 :デフォルトの名無しさん:2009/08/11(火) 06:12:44
>>442
http://www.google.co.jp/search?q=XML+%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93+URI

470 :デフォルトの名無しさん:2009/08/11(火) 07:57:34
一つだけ教えてやろう


471 :デフォルトの名無しさん:2009/08/11(火) 08:03:36
Windowsフォームアプリケーションを作成しています。
960×680のフォームに、
パネルを3列敷き詰めて、各パネルに社員情報、商品情報、売上情報を表示させたいと思っていますが、
情報量が多く1フォームに入りきりません。
なので、各パネルを、編集時のみ大きく表示し、その間、他の非表示パネルを縮小させることにより、常に全項目を一覧把握できるようにしたいと思っています。
これは可能でしょうか?
教えてください。

472 :デフォルトの名無しさん:2009/08/11(火) 08:04:50
>>471
ですが、
「非表示パネル」ではなく
「非編集パネル」のまちがいです。すみません。

473 :デフォルトの名無しさん:2009/08/11(火) 08:05:43
出来ないことはないと思うよ。
でもいろいろコードごりごり書かないとだめかな。

474 :デフォルトの名無しさん:2009/08/11(火) 09:26:11
WinFormsには向かないUIなのは間違いない

475 :デフォルトの名無しさん:2009/08/11(火) 10:17:47
>>471
一旦表示状態をBITMAPにキャプチャして、
フォーム本体は非表示にしてから
縮小したBITMAPを表示することで切り替えたらいいんじゃね?

でも一般的なUIの動きじゃないから、
自然に見えるようになるまでにかなり試行錯誤しないといけないだろうけどね。

うまくできたらこのスレで紹介してくれ。

476 :デフォルトの名無しさん:2009/08/11(火) 11:02:40
javaScropt でアコーディオンのようにクリックすると
項目がにゅーっと広がるようなのは難しいけど
ボタンを押したときにフォームの表示変えることぐらいは可能かと。

それぞれの項目のコントロール作って
それを表示・非表示(コントロールの追加・削除)でできそうだけど。

477 :デフォルトの名無しさん:2009/08/11(火) 11:25:27
表示非表示じゃなくて縮小拡大よ?

WPFなら簡単だけどねー

478 :デフォルトの名無しさん:2009/08/11(火) 11:58:12
PDFとかPowerPointのビューワ・エディタなんかでよくあるのとは違うかな

479 :デフォルトの名無しさん:2009/08/11(火) 11:59:24
入力用のコントロール(TextBoxとかComboBoxとか)がなく、表示オンリーで、
かつ画像なしならGDI+で書いてやっても十分行けると思うけどね。

この条件を一つでも満たさないなら無謀に思える。

そんなことするより、今時LCDなんて馬鹿みたいに安いんだから
素直に画面増やした方が結局低コストで使いやすいソフトになるんじゃないのかな。

それが許されない事情があるとしても、もっと他の工夫を考えたほうがよさそうに思える。

480 :デフォルトの名無しさん:2009/08/11(火) 12:25:42
教えてください

リストボックスに表示されている最上段のインデクスを取得したいです。
たとえばインデックスが10として10の取得方法です。



481 :デフォルトの名無しさん:2009/08/11(火) 12:34:33
例えが例えになってねーよw
TopIndexプロパティ辺りじゃね

482 :10:2009/08/11(火) 12:36:18
言葉足らずでした

リストボックスに表示されている最上段のインデクスを取得したいです。
(選択されていません)
たとえばインデックスが10として10の取得方法です。

483 :480:2009/08/11(火) 12:39:34
>>481
時間差で済みません
ちょっと調べてみます



484 :デフォルトの名無しさん:2009/08/11(火) 12:48:01
int i = listBox1.Items.Count;
て事じゃなくて?

485 :デフォルトの名無しさん:2009/08/11(火) 12:51:14
Item[10]
じゃないの?

486 :デフォルトの名無しさん:2009/08/11(火) 12:53:09
最上段じゃなくて、表示されてるアイテムの個数を知りたいなら
listbox.Items.Count

デフォルトだと最上段のindexは0になってると思う
逆に最下段だったらlistbox.Items.Count-1


表示枠に全アイテムが収まってなくて、表示されてるなかでの最上段〜
とかだったらちょとめんどくさそう。

487 :デフォルトの名無しさん:2009/08/11(火) 13:08:01
あぁ、やっと意味がわかった…。

オーナー描画使えばインデックスはわかるから
なんとかなりそうだけど…。
フォームに変数用意して。

488 :デフォルトの名無しさん:2009/08/11(火) 13:19:44
TopIndexでいいのでは

489 :デフォルトの名無しさん:2009/08/11(火) 13:36:01
あぁ、うん、そうね。

解説
初期状態では、インデックス位置 0 の項目が ListBox の表示領域の先頭に示されます。
ListBox の内容がスクロールされると、別の項目がコントロールの表示領域の先頭に示されることになります。
このプロパティを使用して、ListBox の ListBox..::.ObjectCollection 内にある、
現在コントロールの表示領域の先頭に示されている項目のインデックスを取得できます。
このプロパティを使用すると、コントロールの表示領域の先頭に当たるリスト部分に項目を配置することもできます。


490 :デフォルトの名無しさん:2009/08/11(火) 15:15:17
>487

491 :デフォルトの名無しさん:2009/08/11(火) 20:41:25
>>475
ある部分に配置されたパネルなどのコントロールのキャプチャを取得し、
別のパネルに表示させることはできますか?

492 :デフォルトの名無しさん:2009/08/11(火) 21:41:03
>>491
質問する前にググってるよね?

確認するよ。
質問する前に検索して調べたよね?
すぐ出てきたよ!
http://www.atmarkit.co.jp/fdotnet/dotnettips/428screencapture/screencapture.html

493 :デフォルトの名無しさん:2009/08/11(火) 21:49:44
>>492
491もアレだけど、それは491の要求してるものと違うでしょ。

例えばキャプチャされる側のコントロールの上に他のウィンドウがオーバーラップ
してたらどうなる?

494 :デフォルトの名無しさん:2009/08/11(火) 22:10:07
Pingクラスについて質問です。

http://msdn.microsoft.com/ja-jp/library/system.net.networkinformation.ping(VS.80).aspx

>Ping クラスの同じインスタンスを使用して、複数の ICMP エコー要求を同時に生成することはできません。
>SendAsync の呼び出し中に Send を呼び出したり、SendAsync を前回の呼び出しがすべて完了する前に
>複数回呼び出したりすると、 InvalidOperationException が発生します。

とありますが、同時に複数実行する必要があります。
この場合、どうすればいいでしょうか?

495 :デフォルトの名無しさん:2009/08/11(火) 22:15:30
違うインスタンス使えばいいんじゃねーの?

496 :デフォルトの名無しさん:2009/08/11(火) 22:25:06
別のインスタンスを使えばいいんじゃね?

497 :デフォルトの名無しさん:2009/08/11(火) 22:53:51
>>492
ヤフッていました。
ググってはいませんでした。
めんぼくないです。

498 :デフォルトの名無しさん:2009/08/11(火) 22:55:15
>>492
あるフォームだけをキャプチャできるのかな。
15インチでも17インチでも。

499 :デフォルトの名無しさん:2009/08/11(火) 22:56:09
>>492
パネルだけをキャプチャできるの…?
座標を指定すればいいのか
(-_-;)。

500 :デフォルトの名無しさん:2009/08/12(水) 23:55:39
>>497
ビングれ

501 :デフォルトの名無しさん:2009/08/13(木) 03:29:45
WPFで画像ビューア作ってるんだけど、Imageに入れた画像を拡縮するのって
RenderTransformを使う以外にいい方法ありますか?

502 :デフォルトの名無しさん:2009/08/13(木) 03:33:59
ImageのWidth/Height設定するだけでも変わっちゃったりするが

503 :デフォルトの名無しさん:2009/08/14(金) 00:14:22
DataTableの列は型指定していますので、代入時は型があっていなければ
いけないのに、取り出すときはobject型で返すためいちいちキャストして
やらないといけません。
何でこんな仕様になっているのでしょうか?
指定した型どおりに返してくれれば楽なんですが。

504 :デフォルトの名無しさん:2009/08/14(金) 00:24:31
typedDataTable[rowIndex].名前
とか普通に型指定で取得できるけど

505 :デフォルトの名無しさん:2009/08/14(金) 00:37:00
>>504
そんな方法があったのですね・・・。
ありがとうございました。

506 :デフォルトの名無しさん:2009/08/14(金) 01:09:10
>>502
ああ、確かに。簡単に変えられますね。

画像の拡大縮小、移動を出来るようにしました。ズームする際にクライアント領域(Canvas領域)の真ん中を
中心点に置くようにして、実際に等倍の状態ではうまく動くようになったのですが、
縮小したあと適当に移動して、ズームすると想定外の動きをします。
MainImage.cs中の
cp = new Point(cnvs.ActualWidth / 2, cnvs.ActualHeight / 2);
ip = cnvs.TranslatePoint(cp, this.Image);
で、Point型ipにおかしな値が入るのでこれが臭いのですが、いまいち原因がつかめません。
↓文章ではうまく説明できないのでソース見てください・・・
ttp://www.42ch.net/UploaderSmall/source/1250178864.zip

507 :C ◆qfIRlkSVxbFr :2009/08/14(金) 08:35:53
質問お願いします
vista + C# express edition + excel2007です
参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると
microsoft excel5.0 ?????????? と出てるんですけど・・・
これって一体・・・・2007以前のexcel入れれば治るのでしょうか?
XP + C# express edition + Excel2003 の環境では、オブジェクトライブラリ(半角カナ)と読めるのですが
これってVistaのバグですか?

508 :デフォルトの名無しさん:2009/08/14(金) 11:02:41
Graphics.MeasureString で文字列を表示するのに必要な幅を取得できますが、
逆にコントロールの幅から表示できる文字数を取得する方法ありますか?

1文字づつ増やしながら、幅がコントロールの幅を超えるまでループする方法
だと遅くて使い物になりませんでした。


509 :デフォルトの名無しさん:2009/08/14(金) 11:14:06
MeasureString(String, Font, SizeF, StringFormat, out Int32, out Int32)
つかえばいいよ

510 :デフォルトの名無しさん:2009/08/14(金) 11:14:54
>>508
等幅フォントなら自分で計算できる。
等幅フォントじゃないなら、文字数なんて表示する文字依存だから計算不能。

511 :デフォルトの名無しさん:2009/08/14(金) 11:32:31
C#の文法解説本読み始めて3日目です。

VC#向けの代表的な関数ライブラリ?の
系統図(クラスツリー?)見ないなのが解説してあるサイトありませんか?

512 :デフォルトの名無しさん:2009/08/14(金) 11:45:44
byteを簡単に暗号と復号しようと思ったのですが復号できません。
どうして復号できないのかきっと間抜けな漏れに教えてください。

public byte[] ByteXor(byte[] dat, byte[] account, byte[] password)
{
int len_data = dat.Length;
int len_account = account.Length;
int len_password = password.Length;

for (int i = 0; len_data > i; i++)
{
int ap = i % len_account;
int pp = account[ap] % len_password;
dat[i] = (byte)(dat[i] ^ password[pp]);
}
return dat;
}

513 :デフォルトの名無しさん:2009/08/14(金) 12:02:12
>>508
どうしてそんな値を取得する必要があるんだろう。
必要だと思い込んでるだけじゃないのかな?
普通はいらないと思うけど。

514 :デフォルトの名無しさん:2009/08/14(金) 13:02:46
>>512
試しけど問題なく復号できたぜ

string dat = "これをみられたらわれわれはおしまいだ";
string account = "名無しさん";
string password = "秘密";
byte[] crypt = ByteXor(
Encoding.Unicode.GetBytes(dat),
Encoding.Unicode.GetBytes(account),
Encoding.Unicode.GetBytes(password)
);
string decrypt = Encoding.Unicode.GetString(ByteXor(
crypt,
Encoding.Unicode.GetBytes(account),
Encoding.Unicode.GetBytes(password)
));
MessageBox.Show(decrypt, "hoge");

515 :デフォルトの名無しさん:2009/08/14(金) 13:07:35
>>512
俺も問題なく複合化出来た。
あと、関数内で引数のdatを書き換えてreturnしてるけど意味あるの?

516 :デフォルトの名無しさん:2009/08/14(金) 13:10:26
StringBuilder.Appendが自分自身を返すようなモンじゃね

517 :デフォルトの名無しさん:2009/08/14(金) 13:15:42
>>514-515
関数を書き換えて色々と試していた関係で復号の時のアカウントとパスワードを
反対にしていたのを忘れていました。関数内に問題ないならその前だと思って
見直したら・・・本当に間抜けでした。

すいません。

引数のdatを書き換えているのは関数書き換え前の名残ですがdatの長さが
変わらないとはいうもののやはり新規にbyteを作った方が気持ち良いですよね?。
そうします。

518 :508:2009/08/14(金) 13:22:09
>>509
即答ありがとう。
詳しいね。感謝。

519 :デフォルトの名無しさん:2009/08/14(金) 15:25:08
グローバルな変数として宣言されているDataSet dsがあって、とあるプリベートな関数
内でdsを使いまわしたい場合、

---
ds = new DataSet();

/* ds に値を詰め込んだり計算したりする処理 */

ds.Dispose();
ds = null;

ds = new DataSet()

/* ds に別の値を詰め込んだり計算したり */
---

と言う感じで Dispose & null で良いんでしょうか?
それとも上記の方法だとメモリー上にゴミが残ったりしますか?



520 :デフォルトの名無しさん:2009/08/14(金) 15:52:33
>>519
次の値をすぐに代入してるならnullをセットする意味はない。
ただDataSetはなぜかIDisposableなんだよね。なにやってるんだろ。

521 :デフォルトの名無しさん:2009/08/14(金) 23:03:01
Mainメソッドや、それを含むクラスは必ずpublicにすべきなんでしょうか?
publicを付けてる人と付けていない人が混在していて混乱しています

522 :デフォルトの名無しさん:2009/08/14(金) 23:10:32
>>521
C#はしなくていい。しないほうが推奨。

523 :デフォルトの名無しさん:2009/08/14(金) 23:16:44
それをエントリーポイントとして以外に参照することはまずないと
思うので隠すのが個人的にはいいと思うが、好みな気もする。

とりあえずエントリーポイントを公開しなければならないという
制限は .NET にはない。まぁ逆にある言語があるからその感じで
public にする人もいるって話だな。

524 :デフォルトの名無しさん:2009/08/14(金) 23:36:38
DataGridViewのDataSourceにDataTableをセットしています。
DataGridViewになにも設定しないと、DataTableのcolumn名が
ColumnHeaderとして表示されます。
これと同様のことをRowHeaderにも行いたいのですが、例えば
最初の列をRowHeaderとするというような指定はできるのでしょうか?

525 :デフォルトの名無しさん:2009/08/15(土) 01:01:53
RowHeaderに何表示したいわけ?

526 :デフォルトの名無しさん:2009/08/15(土) 01:23:49
>>525
DataTableのある列です。

527 :デフォルトの名無しさん:2009/08/15(土) 10:26:26
>>522-523
ありがとうございました。
publicにはしないことにします。

528 :デフォルトの名無しさん:2009/08/15(土) 10:37:07
手癖でMainにpublicつけてたw 俺もつけるのやめよう

529 :デフォルトの名無しさん:2009/08/15(土) 10:46:11
Form.DesignerにDispose関数が書かれているけど、なぜFormの基底クラスに無いの?

530 :デフォルトの名無しさん:2009/08/15(土) 11:03:37
基底クラスにもあるけど?

531 :デフォルトの名無しさん:2009/08/15(土) 12:53:54
>>528
svm[Tab][Tab]

532 :デフォルトの名無しさん:2009/08/15(土) 15:57:44
MSDN Library for Visual Studio 2008
Main はクラス内または構造体内で宣言します。Main は static にする必要があり、
public にすることはできません。
外側のクラスまたは構造体を static にする必要はありません。

MSDN Library for Visual Studio 2005
Main メソッドは、クラスまたは構造体の内部で宣言されます。これは静的である必要があります。
パブリックにはしないでください。

533 :デフォルトの名無しさん:2009/08/15(土) 16:20:07
>>531,532
dd
VSも便利そうだから横着しないで使ってみるよ

どうやらJavaのmainがpublic static void mainなので
それを引きずってしまっていたらしい

534 :デフォルトの名無しさん:2009/08/15(土) 17:43:56
List<string, string, string>のような型ないんですか?

535 :デフォルトの名無しさん:2009/08/15(土) 17:48:51
それはいったいどういう動作するの?

536 :デフォルトの名無しさん:2009/08/15(土) 18:38:12
自己解決しました

537 :デフォルトの名無しさん:2009/08/15(土) 18:45:36
それはいったいどういう動作するの?

538 :デフォルトの名無しさん:2009/08/15(土) 19:03:32
本当は何をやりたくてどうやって対応したのか
結構気になる。

それとも全ての要素ごとに型指定できるものと勘違いしてただけなのか

539 :デフォルトの名無しさん:2009/08/15(土) 19:29:47
class String3Entry { public string s1; public string s2; public string s3; }
List<String3Entry>
みたいなのでしょ察するに

540 :デフォルトの名無しさん:2009/08/15(土) 21:02:21
継承先クラスで親クラスのメンバのアクセス修飾を変更することって出来ますか?
たとえば、

// 親クラス
public virtual void test( Object^ value );

とかなっているのを、子クラスでは同名のメンバ関数で String だけを扱うように変更したいとして、

// 子クラス
public void test( String^ value );

としたとしても、パラメータが String 以外の時は親クラスの関数を呼んでしまう。それを防ごうと、

private override void test( Object^ value );

とかするとコンパイルエラーになるし、override を new にすると、親クラスの関数が呼ばれてしまう。
アクセス修飾を変更しないで上書きして機能を無効化&インテリセンスで表示しないようにするだけでも
良いのだけど、指定以外の型で呼んだときにエラーと出来ないだろうかと考えています。

よい方法はありませんか?

※親クラスの設計や継承関係を見直すべきとの考えもあるかと思いますが、制限上それはできません。
 あと、インテリセンスを無効化したつもりでもなぜか表示されるし‥‥。

541 :デフォルトの名無しさん:2009/08/15(土) 21:24:40
overrideした上でObsolete属性付けるぐらいかな(属性の意味合いが本来と違っちゃうけど)
まあ継承でやることじゃなかったね

542 :デフォルトの名無しさん:2009/08/15(土) 21:30:54
親クラスに暗黙キャストできるんだから無理な話だぜとかしようと
思ったけどそれ以前にお前、思うにスレ違いじゃね?


543 :デフォルトの名無しさん:2009/08/15(土) 21:34:17
>>540
どうしてもbase.test(Object)にアクセスできないようにしなければならないのであれば、
ポリモーフィズム的にかなり間違っている

> 子クラスでは同名のメンバ関数で String だけを扱うように変更したい
どうせ間違っているのだから、そういうことは出来ませんと答えてしまえばいい

派生クラスでメソッドがサポートされていないことを知らせる場合は、NotSupportedException
インテリセンスに表示されなくするのは、EditorBrowsable

>>542
言語が混ざってるからスレチかどうか判別しようが無いぜw

544 :デフォルトの名無しさん:2009/08/15(土) 21:41:29
>>540
自分で触れないコードのアクセス修飾を変えようなんて、
目指す方向が間違っているとしか言いようがないね。

ProxyパターンとかAdapterパターン的な工夫を考えるべきなんじゃないのかな。
「親クラス」のメソッドを呼び出す側のコードを書いているわけだよね?

じゃあ、その「親クラス」の型を指定している部分を、別のインターフェイスに
摩り替えてやればいいじゃないか。

545 :デフォルトの名無しさん:2009/08/15(土) 21:47:01
メソッドが呼ばれても何もしなかったらいいだけなんじゃないの?

546 :デフォルトの名無しさん:2009/08/15(土) 21:47:57
あぁ、オーバーライドのメソッド作るとコンパイルできないってか

547 :デフォルトの名無しさん:2009/08/15(土) 22:04:08
byte配列をint配列や、IntPtrに変換するにはどうすればいいですか?
出来ればメモリコピーなしで

548 :デフォルトの名無しさん:2009/08/15(土) 22:32:49
int[]はコピーなしは無理
int*ならfixedしてキャスト
IntPtrはGCHandleとかfixedしてキャストとか

で、何がしたいの?

549 :547:2009/08/15(土) 23:00:16
32bitカラーの画像を扱うのにbyteではなくてintで4バイト一気に処理できるようにしたかったからです。
32bitでない画像も扱うかもしれないので基本byte配列で確保しておいて
必要なときだけintに変換できたらって思ったんです。int*だとunsafeを使う必要がありますが仕方ないか。

IntPtrへの変換はアンマネージ扱うときにもしかしたら必要になるかもしれないので。
回答ありがとうございました

550 :540:2009/08/15(土) 23:10:51
thx > ALL

本来、汎用的に書かれたクラスがあって、それを特定用途向けにデチューン?させたかったのです。
言葉が不足していました。ごめんなさい。

やっぱり、オブジェクト指向の思想からは外れてますよね。
で、無理にデチューンして使用するので、「間違った」使い方をしたときの動作を保証できないので
なんとかそう言う使い方をしたときにそれとわかりやすくさせる方法がないかな‥‥と。

例外を発生させるって発想がなぜかありませんでした。
NotSupportedException を使う方法を試してみたいと思います。

EditorBrowsable って
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never) ] てヤツですよね。
なんでか表示されます。調べてみたら、同じアセンブリ上では表示されてしまう「仕様」?らしいですね。。。

>思ったけどそれ以前にお前、思うにスレ違いじゃね?

最近両方やるので混じってるんです。w
紛らわしくてごめんなさい。

551 :デフォルトの名無しさん:2009/08/15(土) 23:31:41
文字列中の特定の文字だけを全角に変換したいときはどうするのが簡単でしょうか?
perl の tr/ABC/ABC/ みたいなことがしたいんですが。





552 :デフォルトの名無しさん:2009/08/15(土) 23:39:44
MatchEvaluator使った正規表現置換かねぇ

553 :デフォルトの名無しさん:2009/08/15(土) 23:40:49
C#からCOLLADA DOMを使うことって出来ますか

554 :553:2009/08/16(日) 00:07:45
DLLをC++/CLIで使うのではなくて、C#に用意されている機能だけで使えたらいいんですが
そもそもDOMがどういう技術なのかよく分かりません。

555 :デフォルトの名無しさん:2009/08/16(日) 00:21:28
>>553
ある。
C#でまともなプログラムを作りたければ、
Codeplexでいいものが無いか探す癖をつけておけ。

556 :デフォルトの名無しさん:2009/08/16(日) 00:35:24
>>551
Dictionary<char,char>で1文字ずつ写像

557 :デフォルトの名無しさん:2009/08/16(日) 02:40:55
VsualC# 2008 Express EditionでSQLデータベースを
プロジェクトに追加するにはどうすればいいですか?

Webアプリど素人です。

558 :デフォルトの名無しさん:2009/08/16(日) 02:52:46
>>557
まず何らかのRDBサーバーをDSN経由で扱えるように設定する。(インストールする)

何もないところから構築するならSystem.Data.SQLiteも悪い選択肢ではない。
興味がないのでまじめに調べてないが、
最近はMicrosoft SQL Serverもフリーのエディションがあると聞いたことがある。

後は普通にプロジェクトを作って参照するDBを設定するだけ。

559 :557:2009/08/16(日) 03:19:21
ありがとうございます。

>後は普通にプロジェクトを作って参照するDBを設定するだけ。
ここを詳しく教えていただけませんか?

560 :デフォルトの名無しさん:2009/08/16(日) 04:47:37
express はサーバーエクスプローラーってないんだっけ…。
ポトペタで使うんならこう、左側のツールボックスとかの上に
あるんだけど。ここで接続追加して Form とかにペタッて感じで。

他には…とりあえずプロジェクトのアイテムの追加に「データ」って
カテゴリないかな?

DB の種類はとりあえず VS 上に関していえば SQL Server 2005(
2008)Express が一番簡単ですんなりいくかな。一緒に入れたりする
ぐらいのものだし。


561 :デフォルトの名無しさん:2009/08/16(日) 11:04:41
System.Data.SQLiteはVSExpressからじゃなんか使えない

562 :デフォルトの名無しさん:2009/08/16(日) 11:26:30
え?

563 :デフォルトの名無しさん:2009/08/16(日) 13:51:31
ああ、 VS 上では使えないかもね
express は拡張使えないから

564 :デフォルトの名無しさん:2009/08/16(日) 16:23:49
VC#2008を使っているのですが
デバッグあり、なしで実行結果が異なるのはなぜですか?
下にソース載せておきます。

class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Test.Func();
}

}
}

class Test
{
public static Func()
{
var randobj=new Random();

Console.Writeline(randobj.Next(100));
}}



565 :デフォルトの名無しさん:2009/08/16(日) 16:25:02
何がどう変わるのかぐらい説明

566 :デフォルトの名無しさん:2009/08/16(日) 16:25:09
次の人どうぞ

567 :564:2009/08/16(日) 16:26:53
<<565
デバッグなしだと全て同じ値が出力されて
デバッグありだとランダムに違う値が出力されます

568 :デフォルトの名無しさん:2009/08/16(日) 16:33:47
初期値なしでRandomインスタンスを作ると現在時刻をシードにする。
デバッグ実行は処理が遅いから次のインスタンスを作るときには
現在時刻が変わっているだけじゃないのか。

569 :デフォルトの名無しさん:2009/08/16(日) 16:33:50
>>567
デバッグで止めながらやったんだろ
new Random() でシード指定しない場合、時刻からとられるから
秒が変わらないうちにnewしたら同じ値になるわ

570 :564:2009/08/16(日) 16:38:56
>>569
納得しました。

Func()の外でnewしたらできました。

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

571 :デフォルトの名無しさん:2009/08/16(日) 16:42:56
>>564
乱数の種が毎回同じだから。
RandomインスタンスはTestクラスのメンバにでもして、
Environment.TickCountをそれのコンストラクタに指定すればいいんじゃないか。

572 :デフォルトの名無しさん:2009/08/16(日) 23:53:01
C#で、Color.RedやBrushes.Blueは定数ですよね?
開発者はなぜ「Color.RED」や「Brushes.BLUE」みたいな感じに大文字にしなかったのでしょうか?

573 :デフォルトの名無しさん:2009/08/16(日) 23:55:18
定数じゃなくて構造体

574 :デフォルトの名無しさん:2009/08/16(日) 23:57:05
そんな命名規則はC/C++の遺物だから

575 :デフォルトの名無しさん:2009/08/17(月) 00:21:41
>>572
君が定数を全て大文字にしているのなら、今すぐやめましょう。
string.Emptyやint.MaxValueを見なさい。

576 :デフォルトの名無しさん:2009/08/17(月) 00:26:22
劣化ジャスコ言うな

577 :デフォルトの名無しさん:2009/08/17(月) 07:18:40
C#というよりVisualStudioの質問になってしまいます。

ASP.NETのデバッグ時、処理時間に影響する設定などありますか?

pen4の端末だとASP.NET2.0のデバッグが異常に遅いです
ページごとに5〜15秒はかかる感じ。
1.1は問題ありません。

メモリは2Gありますので、比較端末との違いはCPUになってしまうのですが、
そんなにcore2duoとpen4でそんなに差が出るのは普通でしょうか。







578 :デフォルトの名無しさん:2009/08/17(月) 07:23:04
うん。

579 :デフォルトの名無しさん:2009/08/17(月) 10:15:08
>>575
でもMath.PIは全て大文字ですよね?

580 :デフォルトの名無しさん:2009/08/17(月) 10:19:17
>>579
ttp://msdn.microsoft.com/ja-jp/library/cc433241(VS.71).aspx

581 :デフォルトの名無しさん:2009/08/17(月) 10:22:59
ごめんバージョン確認してなかった。.net1.1ってなんだよ
↓最新のやつ
ttp://msdn.microsoft.com/ja-jp/library/ms229043.aspx


1.1使ったことないから何か違いあるのかは確認してないけど
念のため訂正。

582 :デフォルトの名無しさん:2009/08/17(月) 11:40:16
とあるWebアプリのサンプルソースを実行して勉強しようと思っているのですが、
Microsoft.Passport.RPS が無いためにビルドできません。

ドットネットパスポート辺りの認証に使うDLLだと思うのですが、
どこかでダウンロード出来るんでしょうか?
何を参照に追加したら良いのでしょうか?



583 :デフォルトの名無しさん:2009/08/17(月) 13:32:30
引数としてDataSetを受け取るメッソド foo( ref DataSet ds ) があって、ここに
型付DataSetを渡したいのですが

---
hogeDataSet hogeDs = new hogeDataSet();

foo(ref hogeDs) // ←×
foo(ref (DataSet)hogeDs) //←×
---

となってしまいます。foo() はDataSetの構造に依存させたくないので
foo( ref hogeDataSet ds ) とは書きたくありません。

この場合どうやってhogeDsをfoo()に渡してやればいいんでしょうか?


584 :582:2009/08/17(月) 13:39:02
最初の
hogeDataSet hogeDs = new hogeDataSet();
のところを
DataSet hogeDs = new hogeDataSet();
になるように何とかならないのでしょうか?

585 :デフォルトの名無しさん:2009/08/17(月) 13:51:58
DataSetはClass(参照型)なので、"ref"は必要ないよ。

// foo関数定義
foo(DataSet ds)
{
hogeDataSet hogeDs = (hogeDataSet)ds; //hogeDataSetとして扱いたい場合はこのようにキャストして取得する
}

foo関数の呼び出し、
foo((DataSet)hogeDs);
でいけると思われ

586 :デフォルトの名無しさん:2009/08/17(月) 13:54:35
ごめん訂正。戻り値定義書くの忘れてた。
// foo関数定義
void foo(DataSet ds)
{
hogeDataSet hogeDs = (hogeDataSet)ds; //hogeDataSetとして扱いたい場合はこのようにキャストして取得する
}

587 :デフォルトの名無しさん:2009/08/17(月) 13:56:03
>>585
> foo関数の呼び出し、
> foo((DataSet)hogeDs);
キャストいらんだろー

588 :デフォルトの名無しさん:2009/08/17(月) 14:07:04
>>587
あ、いらんかったな。ごめん。

589 :デフォルトの名無しさん:2009/08/17(月) 14:09:37
FFolderというソフトように、エクスプローラ上で空白部分をダブルクリックしたら
BackSpaceを送る(上位へ)という事をしたいのですが、C#で実現しようと
した場合、どのようにアプローチすれば良いのでしょうか。
グローバルフックとはまた違うような気がしていますが…。

590 :デフォルトの名無しさん:2009/08/17(月) 14:45:40
>>583
参照型とrefの関係が分かってないのか、分かってて聞いてるのか不明だが、
分かってて聞いてるならこうするのが一番自然。

DataSet foo( DataSet ds )
戻り側は関数の戻値で返す。

591 :デフォルトの名無しさん:2009/08/17(月) 14:54:57
すいません、ref・outは参照渡しの場合は機械的に必須だと思ってました。
逆に言えば、refやoutを付けなければ値渡しだと思ってたので、今まで作ってきたPGに潜在的
バグがあるかも('A`




592 :デフォルトの名無しさん:2009/08/17(月) 14:56:25
> ref・outは参照渡し
> refやoutを付けなければ値渡し
合ってるよ
ただしそれとは別に参照型・値型という区分けがあるってだけ

593 :デフォルトの名無しさん:2009/08/17(月) 20:52:32
>>589
BHO とかの、Explorer 拡張かなぁ。

594 :デフォルトの名無しさん:2009/08/17(月) 22:57:48
>>586
こんな感じでキャストできるっけ…?
InvalidCastExceptionにならないか?

595 :デフォルトの名無しさん:2009/08/18(火) 01:35:12
>>594
ならない

596 :デフォルトの名無しさん:2009/08/18(火) 01:47:45
ref out の分かりにくいところは、参照型を渡すと、参照の参照が引数になっている事。
で、参照の参照ってなんだよって言われるとCでもやらないと正体不明なんだよな。
参照に書き込める特殊型として理解しておけば十分ですけど。

597 :デフォルトの名無しさん:2009/08/18(火) 01:55:24
>>596
ref outの件に限らず、参照を扱う上でその辺が理解できてないとあとあと困ることになるだろうな。
そういうのを学習するためには、Cで勉強するのが有効かな。

598 :デフォルトの名無しさん:2009/08/18(火) 06:13:41
後々問題が起きなければ
参照の参照でも何でもいいさ

599 :デフォルトの名無しさん:2009/08/18(火) 07:08:55
http://code.msdn.microsoft.com/WindowsAPICodePack
Windows API Code Pack for Microsoft .NET FrameworkってVista上のC# 2008でも使えますか?><
それともVistaでも動く物を作れるというだけで開発はWindows 7上じゃないと駄目ですか?><

This library targets the Windows 7 RTM version (now available to MSDN subscribers),
though many of the features will work on the older versions of Windows operating system.

の意味が良くわかんないです><


600 :デフォルトの名無しさん:2009/08/18(火) 07:24:21
意訳

このライブラリは Windows 7 の製品版(今 MSDN Subscription にあるよ)を対象としてまーす。
古いバージョンの Windows では、いろいろな機能が動かないと思うよー


601 :デフォルトの名無しさん:2009/08/18(火) 07:26:34
逆だ。

このライブラリは Windows 7 の製品版(今 MSDN Subscription にあるよ)を対象としてまーす。
だけど、古いバージョンの Windows でも、いろいろな機能がたぶん動くよー

だろ。

602 :デフォルトの名無しさん:2009/08/18(火) 08:18:20
確かに思わずwon't workと読み下しそうになるな

603 :デフォルトの名無しさん:2009/08/18(火) 09:03:44
>>599-601
厳密に言えば、though以下はその前の文(主節)を修飾する従属節だ。
そして、カンマが付いているので後からの説明としての意味になる。
あと、「色々な機能」なら「the many features」となってるはずなので違う。
一方で、「the older versions of Windows operationg system」は
「Windows OSの古いバージョン」と訳すと
日本語として不自然なのでこれは例外的に前から訳すことにする。

このライブラリは、Windows 7 の製品版(略)を対象としています。
古いバージョンの Windows OS でも機能の多くは動くでしょうけども。

というのが正しい解釈。

604 :デフォルトの名無しさん:2009/08/18(火) 11:06:53
>>600-601,603
>>599ではないが、ありがたい。
そういう意味なのね。
まあ、いまんところWinows7マシンにしかライブラリインストールしてないけどね。

605 :デフォルトの名無しさん:2009/08/18(火) 11:24:24
>Windows API Code Pack
ううーむ。DirectXのmanaged対応はMSは捨てたのかと思ってたら、Vistaで復活させたのか(今頃すぎるが)
XP対応を捨ててもいい時代が来たら、今使ってるライブラリ捨ててこっちに乗り換えてもいいなぁ。

606 :デフォルトの名無しさん:2009/08/18(火) 12:26:19
>>605
いや、Windows7での復活だよ。

607 :デフォルトの名無しさん:2009/08/18(火) 12:30:14
>>600-603
ありがとう><
よくわかんないけどVista+C# 2008の環境にWindows SDK 7.0のx86だけインストールしてから使ってみたら
とりあえずタスクダイアログのサンプルは動きました><

608 :デフォルトの名無しさん:2009/08/18(火) 12:48:59
>>606
今試してみたけど、Vista上でこのライブラリのDirectX10のサポートが普通に動いたよ。
コードが美しいなぁ。これははやるかも。

609 :デフォルトの名無しさん:2009/08/18(火) 13:27:39
>>608
VistaにはDX11も載るからそっちもそのうち使えるようになるね。
APICodePackはこないだ1.0になったばかり、
去年から少しずつバージョンアップしてだんだん充実いってた。

610 :デフォルトの名無しさん:2009/08/18(火) 14:42:25
マジレスなんですが・・・
win98seまだ使ってまして
c#って出来ますか?
開発環境とか対応してるのあったら
教えてください

611 :デフォルトの名無しさん:2009/08/18(火) 14:44:24
ググったらこんなのが。
まだ半分も見てないうちに貼ってみる
ttp://dobon.net/vb/dotnet/links/win98.html

612 :デフォルトの名無しさん:2009/08/18(火) 14:45:19
もうセキュリティアップデートもやってないんじゃなかったか?

613 :デフォルトの名無しさん:2009/08/18(火) 16:08:52
>>610
VirtualPC環境のWin98SEで入れてみてるが、.NET1.1と.NET2.0は導入可能。
ただOSやメモリの制限その他で実用じゃない。
Hello World程度のプログラムを試す程度ならと考えるべき。

614 :デフォルトの名無しさん:2009/08/18(火) 17:00:00
どたなか教えて下さい。
DataSetの中に2のDataTable、dt1とdt2があって、それぞれ

dt1 { ID, NAME }
dt2 { ID, CD, BIRTHDY }

という項目を持っています。dt1とdt2はIDで紐付きますが、リレーションは作成していません。
この状態で、dt1に存在しないIDを持つDataRowをdt2から削除したいのですが、地道にクルクル
回してチェック&削除を行うしかないでしょうか?
それとも、もっと簡単にdt2からレコードを削除(あるいは削除できなくても、RowFilterやDataView
の設定で存在しないかのように振舞うでも構いません)する方法がありますでしょうか?


615 :デフォルトの名無しさん:2009/08/18(火) 17:24:20
そのDataSetがRDBに結び付けられているとするならば、
DB側をSQLで更新して表示をリロードしたら解決するんじゃないのか?

616 :デフォルトの名無しさん:2009/08/18(火) 17:33:21
NOT IN や NOT EXISTSで探せる

617 :デフォルトの名無しさん:2009/08/18(火) 18:09:54
RDBMSとは紐付いていません

618 :デフォルトの名無しさん:2009/08/18(火) 18:15:19
Linq使えないの?

619 :デフォルトの名無しさん:2009/08/18(火) 18:24:44
条件後出しですみません。
RDBとは紐付いておらず、環境は.NET Framework2.0です。Linqは使えません。

620 :デフォルトの名無しさん:2009/08/18(火) 20:23:45
1.
画面を3列×2行に均等に分割してパネルを配置し、
2.
各パネルに必要な入力項目をテキストボックスに並べる。
3.
各パネルは小さくなるので、入力時に、画面中央にスムーズにスライドさせてスムーズに2倍に拡大させる。
4.
入力が終わり次のパネルに移るときにまたしぼませる。

…みたいなことをWindowsフォームアプリケーションでできますか?

621 :デフォルトの名無しさん:2009/08/18(火) 21:14:51
スムーズに拡大という点がちょいと面倒くさくて嫌だ。

妥当なトコで
1. 六枚の表示パネルは入力不要だからグラフィックとして自力描画。
2. それとは別に入力パネルを用意して、中央に置いて非表示にしておく。
3. 表示パネルのクリックした部分の枠線の位置から、XORで長方形の枠を
 消して書いて消して書いて表示パネルの位置まで動かす。
4. 表示パネルの絵柄を薄暗くして、入力パネルを再表示。
5. Enterとかで入力終了したら入力パネルは消して、表示パネル書き直し。
 TABなら次の項目。
なんてどうだ?

622 :デフォルトの名無しさん:2009/08/18(火) 21:57:20
>>620
そういうHTML的なフレーム割りはGUIアプリではあまりやらないんだ。
実際に作ってみればわかるがあまり便利に感じないと思うよ。

情報として重要なほうをメインにしてサイズ可変に。小さくまとめられるほうは固定サイズして片側に寄せる。
これが基本。

623 :デフォルトの名無しさん:2009/08/18(火) 22:02:06
TableLayout みたいのはあるけどね。

624 :デフォルトの名無しさん:2009/08/18(火) 22:09:47
HTMLでもそんなUIはないと思うけど・・・
フラッシュなら話もわかるが。

要するにmacのドックみたいな操作感のUIにしたいんだろう。
>>471と同じ人っぽいが、Winフォームでやるのは無謀に思えるな。

625 :デフォルトの名無しさん:2009/08/18(火) 22:15:31
WPF なら簡単にできそうじゃない?

626 :デフォルトの名無しさん:2009/08/19(水) 00:22:56
俺だったら6個の小さい情報を見るの専用のwindowと
入力用の大きめのwindow1個を用意するなぁ。
小さいwindowをクリックすると、大きいwindowから入力できるようにするとか。
後、ビジネスアプリならアニメーションは絶対やめといた方がいいと思う。
ゲームのメニュー画面でも最初は反応が楽しいけど見慣れてくると飽きて、
レスポンスの方が気になるようになる。
ON/OFFで切り替えられるようにして、とか要望がきちゃうよw

627 :デフォルトの名無しさん:2009/08/19(水) 00:27:17
スレたてるまでもない質問からここを紹介されたので
クローズしてきました

DBの 接続型 非接続型の質問です
私は、Open使うのが接続型で使わないのが非接続型と思っていたんですが違うのでしょうか?


また、アプリケーション開発者は主に下記のように接続型でアクセスかけて処理をするのでしょうか?


じゃんぬねっとさん のサイトから引用です
下記は接続型ですよね?

' SqlConnection の新しいインスタンスを生成する (接続文字列を指定)
Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString)

' データベース接続を開く
cSqlConnection.Open()

' 接続に成功した旨を表示する
MessageBox.Show("Microsoft SQL Server に接続されました")

' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照)
cSqlConnection.Close()

628 :デフォルトの名無しさん:2009/08/19(水) 00:43:10
>>627

> 私は、Open使うのが接続型で使わないのが非接続型と思っていたんですが違うのでしょうか?

違う。DataReader が接続型、DataSet が非接続型


629 :デフォルトの名無しさん:2009/08/19(水) 00:54:19
>>628
ありがとうございます
・・・とゆうことは上記例文の場合
接続型とも非接続型ともいえないってことでしょうか?

630 :デフォルトの名無しさん:2009/08/19(水) 03:57:13
Open うんぬんというよりも
DB更新時のみ接続するのが非接続型で
DB更新時以外も接続しっぱなしなのが接続型(Access等)

DataAdapter や TableAdapter の Fill, Update などは
処理時、接続していない時は接続し、処理後に再び閉じる
というのを自動で行う事で非接続型を実現してる

ちなみに処理前に接続していた場合は、処理後も接続したままになる
これを利用して、アプリ起動時に接続→処理はこの接続を利用→アプリ終了時に閉じる
だと DataSet でも接続型アプリは作れる
connection 書換えが面倒だけど

631 :デフォルトの名無しさん:2009/08/19(水) 08:03:40
皆さん、お返事ありがとうございます。感謝です。

632 :デフォルトの名無しさん:2009/08/19(水) 08:08:13
カスタムコントロールを作成したいのですが、いい参考書はありますか?
パディングを持つテキストボックスを作りたいと思っています。

633 :デフォルトの名しさん:2009/08/19(水) 21:55:06
C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。
最近、JAVAプログラムのオープンソフトでJDrafterというソフトを発見したのですが、
このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaのオブジェクトとして保存でき
るため、Javaプログラムからの表示やアニメーションなどにも応用できるようなのですが、
どなたか、C#でこんなプログラムをご存知の方いないでしょうか。
もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え
ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知
の方があれば、ご教授をお願いします。

634 :デフォルトの名無しさん:2009/08/19(水) 21:57:20
z順序はどこで分かりますか?
また、なぜz順序と呼ぶのですか?

635 :デフォルトの名無しさん:2009/08/19(水) 21:57:53
splitで左右分割し、左側でメニューを選ぶと右側でそれに対応したフォームを表示するようにしたいんですが
パネルを項目分Fillで用意してVisibleで切り替える他にいい方法ありませんか?
パネルの中に部品を置けないんです

636 :デフォルトの名無しさん:2009/08/19(水) 22:02:02
>>634
子コントロールのZオーダーなら、Controls.IndexOfとか。
z軸の順番だから。

637 :デフォルトの名無しさん:2009/08/19(水) 22:25:18
> パネルの中に部品を置けないんです
意味が分からん

638 :デフォルトの名無しさん:2009/08/19(水) 22:41:41
>>632
参考コード

public class MyTextBox : TextBox {
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int[] lParam);
const int EM_SETRECTNP = 0x00B4;
int pad = 0;
public new int Padding {
get { return pad; }
set {
pad = value;
OnResize(new EventArgs());
}
}
protected override void OnResize(EventArgs e) {
base.OnResize(e);
SendMessage(Handle, EM_SETRECTNP, 0,
new int[4] { pad, pad, Width - pad * 2, Height - pad * 2 });
}
}


639 :デフォルトの名無しさん:2009/08/19(水) 22:55:43
あ、バグってら。
まあ、どうバグってて、どう直せばいいかは宿題ね。がんがれ。

640 :デフォルトの名無しさん:2009/08/19(水) 23:01:14
>>637
親にドッキングした複数のパネルに部品を置く時は最前面のパネルにしか置けなくて
並び順を変えながらやるにはパネル多すぎて厳しいんです
どうすればいいですか?

641 :デフォルトの名無しさん:2009/08/19(水) 23:02:26
>>638
ありがとう!!
カスタムコントロールを作成するには、1アプリケーションを作るくらい大変だと聞いて途方に暮れていたんだ。
ちなみにカスタムコントロール作成の指南書は世界に存在しないのかな…。
まさにプロの世界ですね。

642 :デフォルトの名無しさん:2009/08/19(水) 23:03:08
他の全てのパネルを最背面にしないと目的のパネルが最前面にならないんです
お願いします!

643 :デフォルトの名無しさん:2009/08/19(水) 23:03:28
>>639
9割の言葉の意味が分からない
(T_T)。

644 :デフォルトの名無しさん:2009/08/19(水) 23:04:56
>>642
そういうもんだよ。
おかしな気持ちになるが、一番背面に表示させたいものから順番に最背面にしていくんだ。

645 :デフォルトの名無しさん:2009/08/19(水) 23:10:47
>>644
パネルの利用方法はこれであってるんですね
ひたすら入れ替えます。ありがとうございました

646 :デフォルトの名無しさん:2009/08/19(水) 23:14:48
>>640
デザイン時はタブコントロールに入れておいて実行時にパネルにAddしたら?

647 :デフォルトの名無しさん:2009/08/19(水) 23:19:46
実行時でもタブでよくない?
タブ非表示にすればいいだけだし

648 :デフォルトの名無しさん:2009/08/19(水) 23:22:40
・日本は日本人だけの物ではない
・党大会で日本国旗を掲げた事がない
・日本国旗を切り裂く
・子育て支援政策に国籍制限なし
・外国人参政権賛成
・アジア共通通貨を作る
・友愛政治

by民主党

649 :デフォルトの名無しさん:2009/08/19(水) 23:24:37
コピペ君って馬鹿だな、まで読んだ。

650 :デフォルトの名無しさん:2009/08/20(木) 00:40:05
日の丸って国旗じゃないよな?
そんな法律や政令あったっけ?
君が代も国歌じゃないって聞いたけど

651 :デフォルトの名無しさん:2009/08/20(木) 00:43:58
>>650
いつの人だよw

652 :デフォルトの名無しさん:2009/08/20(木) 00:51:48
1999年に「国旗及び国歌に関する法律」で定められたのか

653 :デフォルトの名無しさん:2009/08/20(木) 03:10:20
WPF上での話ですが、
Canvas内でImageクラスの画像を操作(拡大・縮小・回転・移動等)したい場合、
この操作に関するコードはどのクラスに置くのがいいですか?

654 :デフォルトの名無しさん:2009/08/20(木) 06:42:17
>>644
の説明は本当に合ってるのか?

655 :デフォルトの名無しさん:2009/08/20(木) 07:15:10
ラベルやテキストボックス、コマンドボタンやラジオボタンなどのコントロールを100個ほど並べましたが、
タブオーダーがおかしくなりました。
全コントロールのタブオーダーを早く調べる方法はありますか?

656 :デフォルトの名無しさん:2009/08/20(木) 07:35:06
>>653
むしろそれはXAML中にStoryboardで書く。

657 :デフォルトの名無しさん:2009/08/20(木) 09:50:25
>>644
control.TopMost=true;
control.TopMost=false;
のほうが早くない?(試してない)

>>655
表示-タブオーダー


658 :デフォルトの名無しさん:2009/08/20(木) 10:07:50
>>657
デザイン時の話じゃ寝 >644

659 :デフォルトの名無しさん:2009/08/20(木) 10:12:28
>>658
デザイナーなら最前面に移動のボタンがあるじゃん。

660 :デフォルトの名無しさん:2009/08/20(木) 11:52:49
最背面がわかっててなぜ最前面がわからないんだろうか

661 :デフォルトの名無しさん:2009/08/20(木) 12:51:10
ってか、重なる場合はユーザーコントロールで画面をバラバラに作っておいて、
実行時にコンストラクタでAddじゃないの?
画面増えたりUI変更したら死なない?

662 :デフォルトの名無しさん:2009/08/20(木) 13:32:08
というか、重なってるパネルは表示中の1つを除いて非表示にしておくものだと思うんだがどうか。

663 :デフォルトの名無しさん:2009/08/20(木) 13:58:56
>>656
ありがとう。その方向でやってみます

664 :デフォルトの名無しさん:2009/08/20(木) 14:28:51
俺もUC.Addがいいと思う

665 :デフォルトの名無しさん:2009/08/20(木) 15:04:46
DataGridViewでAccessのmdbをソース指定して実行したんですが、データが表示されません
他に何をいじればいいんですか?

666 :デフォルトの名無しさん:2009/08/20(木) 15:11:39
>>665
どんなコードをかいたんだ?

667 :デフォルトの名無しさん:2009/08/20(木) 15:13:58
コードは書いてません
コントロールをフォームに置いて、右上の三角を押してデータソースを選択しただけです

668 :デフォルトの名無しさん:2009/08/20(木) 15:24:08
表示命令を書かなきゃ表示されるわけないだろ

669 :デフォルトの名無しさん:2009/08/20(木) 15:27:10
うーん、設定の仕方がまずっていると思われる。
テーブルの設定も行っている?

670 :デフォルトの名無しさん:2009/08/20(木) 15:42:36
テープルにもチェック入れました。
mdbの簡単な奴を作ってみてソースに指定したんですが表示されません
項目名は表示されるんです。
右上三角のデータのプレビューを押すとズラーっと表示されるんですが
アプリ実行時には項目名だけで、データが表示されないんです。

671 :デフォルトの名無しさん:2009/08/20(木) 15:43:15
おそらく、Form1_Load()あたりの先頭にTableAdapter.Fill()の呼び出しが
追加されてると思うけど、それをtry catchで挟んで捕捉できるようにしてみ。

672 :デフォルトの名無しさん:2009/08/20(木) 15:58:47
わかりました。
Form1_Load()自体が存在してませんでした
Form上でDataGridViewを置いたらForm1_LoadにTableAdapter.Fillが追加されて実行後データが出てきました
ありがとうございました。

673 :デフォルトの名無しさん:2009/08/20(木) 16:05:28
一方のビジブルをフォルスにして他方を前面に出すのと、
一方をブリングトゥフロントにして前面に出すのとでは、
どうちがうの?

674 :デフォルトの名無しさん:2009/08/20(木) 16:19:27
重なったパネルをやめてユーザーコントロールにしたんですが
ユーザーコントロールにDockがなくて詰まりました。
基本クラスをUserControlからPanelにしたりとか考えたんですが名前空間が通りません。どうすればいいですか?

675 :デフォルトの名無しさん:2009/08/20(木) 16:22:02
Webの検索サイトとかでテキストボックスにキーワードを入れて検索ボタンを押すまでの処理をC#でやる場合何を勉強すればいいんでしょうか

676 :デフォルトの名無しさん:2009/08/20(木) 16:36:45
>>675
GUIアプリとして実装するのとWeb上のサービスとして実装するのとで話がぜんぜん変わってくる。
もっと目的を詳しく説明しないと誰も答えられない。

677 :デフォルトの名無しさん:2009/08/20(木) 16:38:35
unmanagedなリソースを複数のインスタンスで共有したいのですが、
参照カウンタ的な形で管理するには自前で実装するしかないのでしょうか。
それとも.NETの共通ライブラリにそれをやるための仕組みが用意されていますか?

678 :デフォルトの名無しさん:2009/08/20(木) 16:45:07
>>676
GUIアプリです。例えば検索したいキーワードの一覧も持っていて、それを順番に検索にかけヒット数などを記録していくソフトにしたいんです。

679 :デフォルトの名無しさん:2009/08/20(木) 18:14:01
>>674
すいません解決しました。自分を親にDockさせるんじゃなくて親に子をDockさせる様に書いたらコンパイルできました。

680 :デフォルトの名無しさん:2009/08/20(木) 18:24:20
>>678
取り敢えずHTTPとHTMLの勉強

>>677
どこまで汎用でやればいいのかって話なので無いんじゃね
まあそんな大層なモンでもないだろ

681 :デフォルトの名無しさん:2009/08/20(木) 19:38:00
>>677
SafeHandleでラップして、破棄はGCに任せれば?

682 :デフォルトの名無しさん:2009/08/20(木) 20:24:28
>>681
どもです。前提が抜けてましたが、基本的に管理対象はCOMオブジェクトのインスタンスです。

683 :デフォルトの名無しさん:2009/08/20(木) 20:47:38
配列に配列を追加する方法を教えてください。
string[] textFiles = Directory.GetFiles(Path, "*.txt");
で、テキストファイル一覧を配列に入れることができます。
これにたとえば拡張子.logを追加するにはどうしたらよいですか?


684 :デフォルトの名無しさん:2009/08/20(木) 20:52:25
ConcatしてToArrayとか
Array.Resizeして残りをArray.Copyとか

685 :デフォルトの名無しさん:2009/08/20(木) 20:55:08
Linq使えば。

686 :デフォルトの名無しさん:2009/08/20(木) 21:12:10
>>673
フォーカスとか

687 :デフォルトの名無しさん:2009/08/20(木) 22:16:33
>>683
string [] exts = { ".txt", ".log" };
var fileNames = from filename in System.IO.Directory.GetFiles (Path)
let ext = System.IO.Path.GetExtension (filename).ToLower ()
where exts.Contains(ext)
select System.IO.Path.GetFileName (filename);
foreach (var file in fileNames){
Console.WriteLine("Filename:{0}", file);
}

688 :デフォルトの名無しさん:2009/08/20(木) 23:21:20
>>684
Array.Resizeをforで回して追加できました。
感謝します。


689 :デフォルトの名無しさん:2009/08/20(木) 23:24:35
いやまてResizeをforとかそんなVB上がりなまねはよせ
追加する配列のLength分だけ一気に増やせば済むことだろ

690 :デフォルトの名無しさん:2009/08/20(木) 23:37:13
ListにAddRangeが常道だろ。

691 :デフォルトの名無しさん:2009/08/20(木) 23:40:34
>>687
古い人間なんで、こっちが分かりやすい・・・やっぱ古いんだなぁと思わざるをえない。

string[] exts = { ".txt", ".log" };
List<string> fileNames = new List<string>();
foreach (string filename in System.IO.Directory.GetFiles(Path)) {
string ext = System.IO.Path.GetExtension(filename).ToLower();
if (exts.Contains(ext)) {
fileNames.Add(System.IO.Path.GetFileName(filename));
}
}
foreach (var file in fileNames) {
Console.WriteLine("Filename:{0}", file);
}

うーんうーん、でも近頃はXML統合機能に心惹かれてる・・・

692 :デフォルトの名無しさん:2009/08/20(木) 23:57:17
>>689
ぜんぜんVBはやったことないです〜。
プログラム言語に触るのはC#だけの純粋初心者です。

最初、Concatを試したんです。
でもうまくいかず、見事討ち死にして、
Array.Resizeにじっくり取り組みました。

検索したサイトに、Array.Copyが書いてなかったんです。
それを真似したもんで、forで回す泥臭い展開に。

さっきこちらに報告したときに、
Array.Copyと書いてあったのに気づいて、
ひょっとして、Array.Copyを使えば、
Lengthを追加したところに、
どばっと1回でコピーできるのだろうと気づいたのですが、
とりあえずできてしまったので、それは次回のお楽しみ。

>>690
Listはまだ使ったことないので、これもそのうちお楽しみ、
と思ったら…。

>>687
>>691
ありがとうございます。
これも参考にします。
いや〜、ここ親切ですね。


693 :デフォルトの名無しさん:2009/08/21(金) 00:08:47
>>687
試しました!
これすごいです。

再帰的にゲットするには、どう改変したらよいですか?


694 :デフォルトの名無しさん:2009/08/21(金) 00:19:04
複数の配列の連結はそれなりに需要あるな

static class ArrayEx {
  public static T[] Concat<T>(params T[][] arrays) {
    return arrays.SelectMany(array => array).ToArray();
  }
}

>>693
Directory.GetFiles (String, String, SearchOption)
ああ、完全には自分の管理下にないディレクトリを検索してUnauthorizedAccessExceptionが出るとか言い出すのはやめてね

695 :デフォルトの名無しさん:2009/08/21(金) 00:42:17
すいません、これからC#を勉強しようと思うのですが
この言語で作られたexeは.NET FrameworkがインストールされてるPCでないと動作しないのでしょうか?

696 :デフォルトの名無しさん:2009/08/21(金) 00:48:05
>>693
static class FileHelper {
public static List<string> GetFilesRecursive(string path) {
List<string> result = new List<string>();
Stack<string> stack = new Stack<string>();
stack.Push(path);
while (stack.Count > 0) {
string dir = stack.Pop();
try {
result.AddRange(Directory.GetFiles(dir));
foreach (string dn in Directory.GetDirectories(dir)) {
stack.Push(dn);
}
}
catch {
}
}
return result;
}
}

string [] exts = { ".txt", ".log" };
var fileNames = from filename in FileHelper.GetFilesRecursive (Path).
let ext = System.IO.Path.GetExtension (filename).ToLower ()
where exts.Contains(ext)
select System.IO.Path.GetFileName (filename);
foreach (var file in fileNames){
Console.WriteLine("Filename:{0}", file);
}



697 :デフォルトの名無しさん:2009/08/21(金) 00:50:42
>>695
うん

698 :デフォルトの名無しさん:2009/08/21(金) 01:19:41
>>695
勉強するなら、そんな程度の事をいちいち聞くな

699 :デフォルトの名無しさん:2009/08/21(金) 01:25:06
>>695
同意だがお前は>>1が読めんのか


700 :デフォルトの名無しさん:2009/08/21(金) 01:26:28
安価ミス
>>699>>698宛て

701 :デフォルトの名無しさん:2009/08/21(金) 01:27:44
>>696
これおもしろい。

public delegate Func<A, R> Recursive<A, R>(Recursive<A, R> r);
public static Func<A, R> Y<A, R> (Func<Func<A, R>, Func<A, R>> f) {
Recursive<A, R> rec = r => a => f(r(r))(a);
return rec(rec);
}

var RecGetFiles = Y<string, IEnumerable<string>> (f => d => System.IO.Directory.GetFiles (d).Concat (System.IO.Directory.GetDirectories (d).SelectMany (f)));
foreach (var f in RecGetFiles(System.IO.Directory.GetCurrentDirectory())) {
Console.WriteLine(f);
}

702 :デフォルトの名無しさん:2009/08/21(金) 01:47:26
>>699
1には正論書くなと書かれてないようだが?

703 :デフォルトの名無しさん:2009/08/21(金) 01:59:19
>>702
>>700

704 :デフォルトの名無しさん:2009/08/21(金) 02:01:36
>>703
1には正論書くなと書かれてないようだが?

705 :デフォルトの名無しさん:2009/08/21(金) 02:05:40
いちいち足跡残していかなくていいから

706 :デフォルトの名無しさん:2009/08/21(金) 02:07:03
いちいち足跡残していかなくていいから

707 :デフォルトの名無しさん:2009/08/21(金) 02:35:57
いちいち足跡残していかなくていいから

708 :デフォルトの名無しさん:2009/08/21(金) 10:56:12
質問があります。
複数のjpeg画像をクリックするたびに順番にスライド表示したいと思います。
配列に、
01.jpg
02.jpg……
と入れたところまではよかったのですが、くり返しかと考えて、
private void Button_Click(object sender, EventArgs e){
for (int i = 0; i < phptos.Length -1; i++) {
pictureBox.Image = Bitmap.FromFile(photos[i]);
}
}
としたら、いちどにぜんぶ表示して終わっちゃいました。
そりゃそうなんですが、こういう場合ってどうすればいいんですか?


709 :デフォルトの名無しさん:2009/08/21(金) 11:04:50
現在表示中の画像のインデックスをフィールドに置いとく
クリックごとに次のインデックスの画像を表示させる

あと表示し終わったImageオブジェクトはDisposeする

710 :デフォルトの名無しさん:2009/08/21(金) 11:10:28
インデックスというか、この場合は配列なりリストなりのコンテナのEnumeratorだろうな。

711 :デフォルトの名無しさん:2009/08/21(金) 11:38:51
>>709
できました!
int c = 0;
private void Button_Click(object sender, EventArgs e){
pictureBox.Image.Dispose();
pictureBox.Image = Bitmap.FromFile(phoho[c]);
c++;
}
ありがとう。
>>710
Enumeratorってどう使うんですか?
上のを書き換えるとしたら?


712 :デフォルトの名無しさん:2009/08/21(金) 11:40:18
>>711
そのまま行くと突き抜けるぞ。

713 :デフォルトの名無しさん:2009/08/21(金) 11:56:57
横やりだけどyeild returnで回すのかな?

714 :デフォルトの名無しさん:2009/08/21(金) 13:14:14
他のアプリが使用してるデータをC#アプリから使用したいんですけど
どうすればできるんでしょうか?
具体的にはMetatrader4というソフトのリアルタイムのプライスデータを取得したいです。

715 :デフォルトの名無しさん:2009/08/21(金) 13:33:58
>>714
MT4のAPIを使えば出来ます。
http://dotnetremoting.com/Download/Meta1011/MT4NetSetup.exe

716 :デフォルトの名無しさん:2009/08/21(金) 13:39:26
>>714
あと、ここもプロミシングだね。
http://www.openforexplatform.com/

717 :デフォルトの名無しさん:2009/08/21(金) 13:39:26
>>713
GetEnumerator()呼ぶだけじゃん

718 :デフォルトの名無しさん:2009/08/21(金) 13:41:52
>>717
戻るボタン追加したいときにどうする?

719 :デフォルトの名無しさん:2009/08/21(金) 13:56:18
>>715
ありがとうございます!
実はそれちょっとまえに見つけたのですが、お恥ずかしながら
何がなにやらさっぱりわからずどうやって使っていいものかもわからず・・・orz
もうちょっとよくそれ見てみます!

あと、今見つけたんですけどttp://gurizuri0505.halfmoon.jp/develop/csharp/processmessage
にあるようにIpcServerChannelクラスとIpcClientChannelクラスを使っても出来るんでしょうかね?
にIpcServerChannelで作ったdllをMT4のカスタムインジケータに読み込んでやって
使うことができるのかな?とか想像してるんですが、その考え方はあってますか?

ここでMT4の即レスもらえるとは思ってなかったんですが
C#+MT4で使ってらっしゃるんですか?

720 :デフォルトの名無しさん:2009/08/21(金) 14:23:56
>>719
使い方はここが参考になると思う。
http://forum.mql4.com/20644

趣味プログラマなので、これ自体は使った事ない。
昔、会社でこそっとトレードする用タスクバーアプリを作った事があるくらいだな。

721 :デフォルトの名無しさん:2009/08/22(土) 02:16:19
【Anti Virus】Kaspersky Lab Part87【カスペルスキー】
http://pc11.2ch.net/test/read.cgi/sec/1248541340/806

806 :名無しさん@お腹いっぱい。 [] :2009/08/13(木) 17:45:58
何だこのスレwww

このスレを見ている人はこんなスレも見ています。(ver 0.20)
女子小中学生に性欲わかないやつは異常3 [生活サロン]
小学生のこどもおっぱいをちゅーちゅーしたい [大規模MMO]
小学生のこどもおっぱいをちゅーちゅーしたい [スカパー]
小・中学校のちょっとエッチな淡い思い出 [セピア]
小学生のこどもおっぱいをちゅーちゅーしたい [U-15タレント]




【Anti Virus】Kaspersky Lab Part87【カスペルスキー】実質Part88
http://pc11.2ch.net/test/read.cgi/sec/1248628556/364

364 :名無しさん@お腹いっぱい。 [sage] :2009/08/21(金) 23:20:36
23時20分

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
女子小中学生に性欲わかないやつは異常3 [生活サロン]
小学生のこどもおっぱいをちゅーちゅーしたい [スカパー]
小・中学校のちょっとエッチな淡い思い出 [セピア]
小学生のこどもおっぱいをちゅーちゅーしたい [U-15タレント]
小学生のこどもおっぱいをちゅーちゅーしたい [大規模MMO]

722 :デフォルトの名無しさん:2009/08/22(土) 02:17:01
●前科2犯・中尾嘉宏(46)(=2chコテハン:FOX★)について
アダルトサイト PINKちゃんねるの責任者であり、2ちゃんねるの影の責任者。
2chコテハン FOX★=中尾嘉宏(46)

■2ちゃんねる幹部・中尾嘉宏(46)(FOX★)は詐欺(出資法違反)および児童買春斡旋で
逮捕されていた。
http://web.archive.org/web/20050305185414/http://jsimin.at.infoseek.co.jp/opinion/newrich.html

北海道警生活環境課と札幌・中央署は1997年5月6日、インターネットを利用し
不特定多数の人から金を集めていたとして、出資法違反(預かり金の禁止) の疑いで
札幌市厚別区もみじ台南七丁目、パソコンソフト開発販売会社社長 中尾嘉宏容疑者(当時37)
を逮捕した。

■解説
中尾嘉宏(46)は、詐欺(出資法違反)と児童買春斡旋の罪とあわせて前科2犯。
2ちゃんねるのサーバー管理者で、ピンクちゃんねる管理者でもある。

723 :デフォルトの名無しさん:2009/08/22(土) 02:17:44
2009/6/25「Kaspersky Internet Security 2010」欧州で発売
http://internet.watch.impress.co.jp/docs/news/20090625_296612.html

露Kaspersky Labは24日、個人向けの総合セキュリティソフト
「Kaspersky Internet Security 2010(KIS2010)」とウイルス対策ソフト
「Kaspersky Anti-Virus 2010(KAV2010)」を発表した。
KIS2010とKAV2010は現在、ドイツ、フランス、スペイン、イタリアで販売されている。
米国と英国では7月に発売する予定。
日本国内の発売日は未定だが、Kaspersky製品を販売するジャストシステムによれば、
「例年通りであれば秋口に発売する」としている。


手を打たないと蕪価下がりますよw

724 :デフォルトの名無しさん:2009/08/22(土) 02:33:18
プロジェクトにクラスを追加したときに、
毎回 using System.Diagnostics; を
手作業で追加しています。

クラス追加時にデフォルトで
追加されてるようにする方法はないでしょうか?


725 :デフォルトの名無しさん:2009/08/22(土) 02:44:36
テンプレート変更すれば
てか、スマートタグでは不満?

726 :デフォルトの名無しさん:2009/08/22(土) 08:00:52
一瞬コピペスレかと思って、>>724を罵倒しそうになった

727 :デフォルトの名無しさん:2009/08/22(土) 12:35:59
TestDriven.NET で IDE から
始めたテストをキャンセルする
ことはできますか?

キャンセル方法がわからないので、 devenv.exe
を強制終了させているんですが、
もっといい方法はないかと・・・。

728 :デフォルトの名無しさん:2009/08/22(土) 14:29:06
>>727
なんでVS標準のテスト機構を使わないの?

729 :デフォルトの名無しさん:2009/08/22(土) 16:24:33
2005か、2008EEだからか

730 :デフォルトの名無しさん:2009/08/22(土) 17:14:28
string型 2008-5-3
をDateTime型に変換するにはどうすればいいですか?

731 :デフォルトの名無しさん:2009/08/22(土) 17:15:21
正規表現を使おうと思い、「using System.Text.RegularExpressions」と書いたのですが、
「型または名前空間名 'RegularExpressions' は名前空間 'System.Text' に存在しません。アセンブリ参照が不足しています。」
とコンパイルエラーが出てしまいました。何が悪いのでしょうか。

732 :デフォルトの名無しさん:2009/08/22(土) 17:18:43
>>730
DateTime.TryParseExact

733 :デフォルトの名無しさん:2009/08/22(土) 17:25:12
DateTime.Parse( string );
で一発

734 :デフォルトの名無しさん:2009/08/22(土) 17:35:47
>>731
末尾のsいらん

735 :デフォルトの名無しさん:2009/08/22(土) 17:41:12
>>734
どちらでも同じエラーが出ます。

736 :デフォルトの名無しさん:2009/08/22(土) 17:57:34
エラーにちゃんと書いてある通り参照設定が足りてないんだろ
どういう環境でコンパイルしたのかは知らんけど。

あと末尾のsはない方が困る

737 :デフォルトの名無しさん:2009/08/22(土) 18:16:05
Systemの参照を追加していなかったせいのようです。
ありがとうございました。

738 :デフォルトの名無しさん:2009/08/22(土) 18:38:57
in演算子がほしいです
if (int i in {1,2,3}) みたいに書きたいです
おねがいします

739 :デフォルトの名無しさん:2009/08/22(土) 18:40:57
>>712
突き抜けてます。例外…。
>>713
yeild return
ってのがあるんですか?
yield return i;
と使うらしい。

int c = 0;
private void Button_Click(object sender, EventArgs e){
pictureBox.Image.Dispose();
pictureBox.Image = Bitmap.FromFile(phoho[c]);
c++;
yield return c;
}

'void' は反復子インターフェイス型ではないため、'Button_Click(object, System.EventArgs)' の本体は反復子ブロックにできません
まあ、forじゃないからな〜。


740 :デフォルトの名無しさん:2009/08/22(土) 19:07:40
>>738
強いて言えばContains()メソッドだな。
だが、C#はそんな書き方をする言語じゃない。
LINQを使え。

741 :デフォルトの名無しさん:2009/08/22(土) 19:25:15
誰もがLINQを使えると思ってンのか?
まだ.NET2.0な現場は多い。

742 :デフォルトの名無しさん:2009/08/22(土) 19:26:11
初心者スレに現場人が来てんじゃねえよ

743 :デフォルトの名無しさん:2009/08/22(土) 19:29:03
現場(苦笑)

744 :デフォルトの名無しさん:2009/08/22(土) 19:31:28
>>741
>738 は.NET のバージョンを指定してないんだから、
C#の世界で一般的に一番便利な方法を教えておけばそれでいい。

>>742
741に言ってくれ。

745 :デフォルトの名無しさん:2009/08/22(土) 19:36:04
>>740
Contains() そんなのあるのか!
とりあえずそれで事足りそうです
ありがとうございます

746 :デフォルトの名無しさん:2009/08/23(日) 00:20:52
Math.Roundが小数点以下までしか丸められないんですけど、
1の位から下を切り捨てるにはどうすればいいんですか?

747 :デフォルトの名無しさん:2009/08/23(日) 00:43:57
まずAPIリファレンスくらい読・・・言っても無駄か。
Floor とか Ceiling とか Truncate みてみ。

748 :デフォルトの名無しさん:2009/08/23(日) 01:21:27
>>746
質問が日本語でオケ過ぎるんじゃない?
小数点より上で丸めたい、って意味か?

たぶんぴったりのメソッドは用意されてない。
こんな風に自分で作るしかないんじゃないのか?
一応言っとくけど、多分厳密には正しい処理じゃないと思う。

// 小数点より上の場合は負の数を指定する。
double RoundEx(double x, int digit, MidpointRounding mode)
{
  if (digit< 0)
  {
    int divider = (int)Math.Pow(10, -digit);
    return Math.Round(Math.Round(x / divider, 0, mode) * divider, 0);
  }
  else
  {
    return Math.Round(x, digit, mode);
  }      
}

749 :デフォルトの名無しさん:2009/08/23(日) 02:13:27
昨日、小数点第一位以下きりすての処理で、
10倍した後、int型にキャストし、10分の1にするというソースを発見してしまった。

750 :デフォルトの名無しさん:2009/08/23(日) 02:32:16
decimal data = 12.34;
data = Math.Round(data / 10, 0) * 10;
// data = 10

751 :デフォルトの名無しさん:2009/08/23(日) 02:42:47
え?

752 :デフォルトの名無しさん:2009/08/23(日) 02:56:54
やりたいようにやりゃええねん

753 :デフォルトの名無しさん:2009/08/23(日) 04:13:43
Dns.GetHostEntry メソッド (String)に関してなのですが、
MSDNをには
>ホスト名として空の文字列が渡されると、このメソッドはローカル ホストの IPv4 アドレスを返します。
と書いてあるのに、実際にやってみるとIPHostEntry.AddressListにIPV6のアドレスが入っています。
これはなぜでしょうか?

754 :デフォルトの名無しさん:2009/08/23(日) 06:45:30
double data = 12.34;
int a = (int)(data / 10) * 10

755 :デフォルトの名無しさん:2009/08/23(日) 06:50:10
Accesseに繋いだんですがめちゃくちゃ重いです。
スクロール地獄です。どうすればいいと思いますか?

756 :デフォルトの名無しさん:2009/08/23(日) 09:43:49
死ねばいいと思うよ。

757 :デフォルトの名無しさん:2009/08/23(日) 10:14:22
>>755
DataTableへ取り込めばいいと思うよ。

758 :デフォルトの名無しさん:2009/08/23(日) 10:39:06
>>753
ドキュメントのミスだろ
英語版の方でツッコミが入ってる

759 :デフォルトの名無しさん:2009/08/23(日) 12:05:24
>>757
AccesseってDataTableに取り込めるものなの?

760 :デフォルトの名無しさん:2009/08/23(日) 12:11:39
>>759
なんで取り込めないと思ったのかこっちが聞きたいくらいだ。

761 :デフォルトの名無しさん:2009/08/23(日) 12:12:59
SqlDataAdapter.Fillで簡単にできる

762 :759≠755:2009/08/23(日) 12:20:36
DataTableに取り込み可能な"Accesse"というものの存在を知らないから訊いた

763 :デフォルトの名無しさん:2009/08/23(日) 12:28:05
>>762
君の読解力のなさは人生をあきらめた方が良いレベル。

764 :デフォルトの名無しさん:2009/08/23(日) 14:01:36
SとMが集まるのはこのスレであってますか?

765 :デフォルトの名無しさん:2009/08/23(日) 15:13:13
>>747
Foolに見えたw

766 :デフォルトの名無しさん:2009/08/23(日) 15:13:44
Javaスレから流れてきただけだろ

767 :デフォルトの名無しさん:2009/08/23(日) 16:03:17
>>758
ありがとうございます。
英語の方見てみます。

768 :デフォルトの名無しさん:2009/08/23(日) 16:19:03
XXXDataSet.OOODataTable test;
test = this.OOOTableAdapter.GetData();
this.OOOTableAdapter.Fill( test );

GetDataしたんですが、データが表示されないです。どうすればいいですか?

769 :デフォルトの名無しさん:2009/08/23(日) 16:25:36
あきらめたら?

770 :デフォルトの名無しさん:2009/08/23(日) 16:28:18
あきらめました。今ADO.NET2.0を注文しましたすいません

771 :デフォルトの名無しさん:2009/08/23(日) 16:33:53
解決しました。
dataGridView.DataSource = test;


772 :デフォルトの名無しさん:2009/08/23(日) 16:35:39
酷すぎるぞ

773 :デフォルトの名無しさん:2009/08/23(日) 17:21:26
これはひどい

774 :デフォルトの名無しさん:2009/08/23(日) 17:23:04
みんな初心に帰ろう。

775 :デフォルトの名無しさん:2009/08/23(日) 17:35:40
ここで聞けばいいのか分かりませんが
今MeCabという形態素解析のC#ラッパー?のMeCabSharpというのを使ってみようとしているのですが、解析された結果をひとつずつとる為に
MeCab.Tagger mecab = new MeCab.Tagger();

MeCab.Node test = mecab.parseToNode("形態素解析器MeCabを使うテストです");
for (int i=1;i<=10;++i)
{
Console.WriteLine(test.surface);
test = test.next;
}

とすることで一応要素を表示することが出来たのですが、要素の数の取得の仕方が分からずループの回数の設定が出来ません(上のコードの10は試してみて決めた数です)
もしここを10以上にすると
ハンドルされていない例外: System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
というエラーが出ます。
文章が変ってもすべての要素を取り出したいのですが
どのようにすればいいのでしょうか

776 :デフォルトの名無しさん:2009/08/23(日) 17:40:08
Nextで走査してるくらいだからExistsNextNodeとかありそうだが

777 :デフォルトの名無しさん:2009/08/23(日) 17:41:58
そういう意味合いのメソッドやらプロパティがありそうという意味だからね
実際にどんな名前で存在するかは知らんよ

778 :デフォルトの名無しさん:2009/08/23(日) 17:49:07
>MeCab::Node は, 双方向リストとして表現されており, next, prev というメンバ変数があります. それぞれ, 次の形態素, 前の形態素を MeCab::Node クラスのインスタンスとして返します. 全形態素には, next を順次呼ぶことでアクセスできます.

って書いてあるからnullきたら終端だろ多分。

779 :デフォルトの名無しさん:2009/08/23(日) 17:54:16
nullでやってみたらいけました
みなさんありがとうございました

780 :デフォルトの名無しさん:2009/08/23(日) 17:55:50
おう

781 :デフォルトの名無しさん:2009/08/23(日) 18:12:44
というか、初めて使うライブラリはまずデバッガで止めて、
作られたオブジェクトに何のプロパティがあるのか眺めるところから始めると思うんだが……?

782 :デフォルトの名無しさん:2009/08/23(日) 18:56:53
dataGridView.DataSource = test;

でもスクロール動作重いです
どういうことですか?
mdbから読みこんでるから遅いという流れなんじゃないんですか?
それでインスタンスに取り込んでそれをソースに指定して重いってどうなってるんですか?

783 :デフォルトの名無しさん:2009/08/23(日) 19:05:34
知るかハゲ

784 :デフォルトの名無しさん:2009/08/23(日) 19:40:13
>>782
てめぇの作りが悪い

785 :デフォルトの名無しさん:2009/08/23(日) 20:10:27
助けてくださいお願いします

786 :デフォルトの名無しさん:2009/08/23(日) 20:49:19
オマエだったら、オマエが挙げた情報だけで原因までわかるか?
どうしてもって言うなら、関係する箇所すべてのコードをどっかに上げてごらん。

787 :デフォルトの名無しさん:2009/08/23(日) 20:57:18
壁紙について教えてください。
現在の壁紙をはがすにはどうしたらよいでしょう?
VBだと
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, vbNullChar, SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE)
でできるらしく、
vbNullCharは0らしいので、
n = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "0", SPIF_SENDWININICHANGE);
としてみたのですが、なにも起きないでいます。
どうすりゃよいですか?
現在の壁紙のパスを取得するにはどうしたらよいでしょう?
アドバイスお願いします。


788 :デフォルトの名無しさん:2009/08/23(日) 21:01:29
”0”じゃなくてString.Emptyにしてみ

パスはSPI_GETDESKTOP〜使えよ

789 :デフォルトの名無しさん:2009/08/23(日) 21:01:31
GetData()で解決するんですか?
これで習得したテーブルをソースにしても早くならないということは
DataGridViewの限界ってことなんでしょうか?
そうするとGetDataの意味がないのでこれで解決すると教えてくれた方アドバイスお願いします!

790 :デフォルトの名無しさん:2009/08/23(日) 21:07:58
GetDataって参照を渡してるだけだから結局mdbにアクセスしてるんじゃなかろうか?

791 :デフォルトの名無しさん:2009/08/23(日) 21:09:13
うるせぇ少しは自分で調べろ

792 :デフォルトの名無しさん:2009/08/23(日) 21:18:52
夏休みがまだあると思ったら、インフルでの学級閉鎖で
2学期開始が早くなってたんだな。で、宿題まだと。
こんなとこで現実逃避してないで早くやっちゃいなよ。

793 :デフォルトの名無しさん:2009/08/23(日) 21:18:58
頭悪すぎる

794 :デフォルトの名無しさん:2009/08/23(日) 21:19:20
どうせ列がものすごい数とか、そんなオチだろw

795 :デフォルトの名無しさん:2009/08/23(日) 21:24:22
>>789
仕様です。エクセルシートにコピーしてぐりぐりスクロールしてください

796 :デフォルトの名無しさん:2009/08/23(日) 21:42:33
お前らめちゃくちゃだから
知らないのにいちいち足跡残さなくていいから

797 :デフォルトの名無しさん:2009/08/23(日) 21:46:44
は?dataGridViewが使いものにならないの常識だろ

798 :デフォルトの名無しさん:2009/08/23(日) 22:02:14
>>788
できました。ありがとうございます。

現在の壁紙のパスを取得するほうは、どうしたらよいでしょう?


799 :デフォルトの名無しさん:2009/08/23(日) 22:04:17
第三引数をStringBuilderにして渡せばいい

800 :デフォルトの名無しさん:2009/08/23(日) 22:29:16
スレチかもしれないけど、ネットブックでVisualStudio C# express editionって結構スムーズに動くもんだね。
ちょっと驚いた。もちろん本格的にネットブックで開発しようとは思わないけど
ちょっと屋外でメールとかWebをチェックするついでに小さなコード試したりするには便利かなと思った。

801 :デフォルトの名無しさん:2009/08/23(日) 22:35:11
>>800
そういう目的で買おうかなぁって考えてたところだから、
その情報はすごく助かります。スレチだけど。。。

802 :デフォルトの名無しさん:2009/08/23(日) 22:38:44
スレ違いだから

803 :デフォルトの名無しさん:2009/08/23(日) 22:48:06
>>799
n = WinAPI.SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, StringBuilder, SPI_SENDWININICHANGE);
ですか?


804 :デフォルトの名無しさん:2009/08/23(日) 22:51:50
やってみたらエラーになるだろよ・・・

805 :デフォルトの名無しさん:2009/08/23(日) 22:58:59
エラーが3つも出てます…。
'System.Text.StringBuilder' は '型' ですが、'変数' のように使用されています。
'WindowsFormsApplication1.Form1.WinAPI.SystemParametersInfo(int, int, string, int)' に最も適しているオーバーロード メソッドには無効な引数がいくつか含まれています。
引数 '3': 'System.Text.StringBuilder' から 'string' に変換できません。

806 :デフォルトの名無しさん:2009/08/23(日) 23:03:37
>>805
少しは自分の頭で考えてみろよ

807 :デフォルトの名無しさん:2009/08/23(日) 23:03:39
>>805
この辺でも読め
http://msdn.microsoft.com/ja-jp/library/aa288468%28VS.71%29.aspx
http://www.atmarkit.co.jp/fdotnet/dotnettips/024w32api/w32api.html

808 :デフォルトの名無しさん:2009/08/23(日) 23:32:09
StringBudlderの使い方はなんとなくわかりました。
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < 1000; i++)
{sb.Append("abc");}
とか。
で、第3引数になにとなにをStringBuilderにすればいいんでしょう?


809 :デフォルトの名無しさん:2009/08/23(日) 23:33:51
駄目だコリア

810 :デフォルトの名無しさん:2009/08/23(日) 23:35:31
ふざけてるのか??

811 :デフォルトの名無しさん:2009/08/23(日) 23:38:20
ふざけてないです。
初心者なのでお手柔らかにお願いします。


812 :デフォルトの名無しさん:2009/08/23(日) 23:58:30
MSDNのプラットフォーム呼び出しの項目読めよ

813 :デフォルトの名無しさん:2009/08/24(月) 00:24:01
お前には無理だ。

814 :デフォルトの名無しさん:2009/08/24(月) 00:37:32
黙れ糞やるお

815 :デフォルトの名無しさん:2009/08/24(月) 02:11:08
>>811
貴方が今の700倍優秀でも教えてもらえないです。
能力の問題ではないんです。姿勢の問題です。
自分で努力したというものが伝わってこないのです。
私達の目には楽をして答えを得ようとしているようにうつるのです。
貴方は聞きグセが付き始めています。
このクセがつくとプログラマーとしてあらゆるスタートが遅れます。
先輩方にウザがられるので、チームとしても支障が出ます。
このままでは貴方はダメになります。ゴミです。永遠の初心者です。
現時点で最良の選択は>>812ではないかと思います。
貴方の成長を心より応援ゴミです。大事な事なので二度言いました。

816 :デフォルトの名無しさん:2009/08/24(月) 03:22:21
Panelのドッキングなんですが、DockでTopを選んで、アプリを拡大縮小した時に、下の余白の長さは固定にしたいんですが、どうすればいいんでしょうか
TopでDockした方のPanelは縦の長さが固定なんですが、固定部分を余白と逆にしたいんです。
いろいろ組み合わせて試したんですがだめなんです。教えてください。

817 :デフォルトの名無しさん:2009/08/24(月) 03:26:51
PanelはDock.Fillにして、余白とやらをControlにでもしてそれをDock.Bottomにすれ
つかAnchorの方がその場合楽な気がする

818 :デフォルトの名無しさん:2009/08/24(月) 03:40:26
すごいできました!ありがとうございました

819 :デフォルトの名無しさん:2009/08/24(月) 13:32:13
正規表現を使って、s = "hoge0" と言う文字列に対して

Regex r = new Regex("hoge([0-9])");
Match m = r.Match(s);

とすればグループ値 m.Group[] が取得出来ますが、この逆のことを行うメソッドは
ありますでしょうか?つまり

"0" と "hoge([0-9])" の2つの文字列から "hoge0" を導き出しのです。

820 :デフォルトの名無しさん:2009/08/24(月) 13:39:41
>>819
m.Valueかな?

821 :デフォルトの名無しさん:2009/08/24(月) 13:49:20
Formで自分のウィンドウクラス名を取得するにはどうしたらいいんでしょうか?

this.CreateParams.ClassNameだとnullが返ってきましたorz

822 :デフォルトの名無しさん:2009/08/24(月) 13:52:31
GetClassName関数

823 :デフォルトの名無しさん:2009/08/24(月) 13:59:31
>>822
おーーー!thxです!

824 :デフォルトの名無しさん:2009/08/24(月) 14:32:59
>>820
お前、アフォだろ?

825 :デフォルトの名無しさん:2009/08/24(月) 17:39:32
Visual Studio 2008 Express Editionでキーボードマクロを使いたいのですが、メニューを探しても
項目が見つからず、Ctrl + Shift + Rを押しても何も起きません。
Express Editionだと使えないのでしょうか?


826 :デフォルトの名無しさん:2009/08/24(月) 21:00:40
>>819
Matchの反対ならReplaceでいいかな?

827 :デフォルトの名無しさん:2009/08/24(月) 21:43:44
えっ?

828 :デフォルトの名無しさん:2009/08/24(月) 21:56:17
すみません。とてつもなく初歩的な質問をします。
C#でゲームを作っているのですが、Playsound()を使ってBGMと効果音を同時に演奏しようとし場合、
BGMが停止してしまいます。
効果音を演奏するときにBGMが停止しないようにするにはどうすればいいんでしょうか。

829 :デフォルトの名無しさん:2009/08/24(月) 22:03:52
あああsage忘れたすみません

830 :デフォルトの名無しさん:2009/08/24(月) 22:08:12
SND_ASYNC で。

831 :デフォルトの名無しさん:2009/08/24(月) 22:19:10
PlaySoundは同時に一つしか再生できんはず
手軽なのはmciSendStringかなー

832 :デフォルトの名無しさん:2009/08/24(月) 22:43:24
自分でミキシング

833 :デフォルトの名無しさん:2009/08/24(月) 22:50:33
時間がかかる処理をバックグラウンドでやるにはどうすればいいですか?
Visual C#でプロジェクト全体を検索すると、一定時間が経つとダイアログが表示されて
中止できるように、途中で処理を中止できるようにしたいんです。処理が行われている間も
GUIが応答するようにしたいです。

834 :デフォルトの名無しさん:2009/08/24(月) 22:53:57
ばっくぐらうんどわーかー

835 :デフォルトの名無しさん:2009/08/24(月) 22:57:54
そんなもん使わず、自分でスレッド起動した方がずっと分かりやすいよ。

836 :833:2009/08/24(月) 23:05:53
じゃあスレッドを使うことにします
ありがとうございました。
OpenGL使う予定なのでスレッドが絡むとちょっとややこしそうですが、仕方ないですね

837 :デフォルトの名無しさん:2009/08/24(月) 23:27:36
>>828
OpenALは?

838 :デフォルトの名無しさん:2009/08/25(火) 08:03:24
4階層のtreeviewを作成し、ノード検索ボックスも設けましたが、
treeが全て収縮している状態で検索をかけると、検索したいノード名のルートだけではなく、検索したいノードの同レベルにある他ノードまで展開されてしまいます。
ルートだけ表示させることはできないでしょうか。

839 :デフォルトの名無しさん:2009/08/25(火) 09:21:23
初心者スレに変なのが沸いてるな。
煽りや荒らし以外はもう一度>>1

まぁVBスレやAPIスレにいた荒らしだろうけど

840 :デフォルトの名無しさん:2009/08/25(火) 09:38:01
>>838
展開しなければ良いんではないだろうか
どうやって検索してるんかしらんけど
つーかTreeViewってWinFormにもWebにもWPFにもあるしなー

> ルートだけ表示させることはできないでしょうか。
ルートって普通rootのこと指すから、こういう使い方しない方が良い

841 :デフォルトの名無しさん:2009/08/25(火) 10:39:22
あほか

842 :デフォルトの名無しさん:2009/08/25(火) 10:50:45
ポカーン

843 :デフォルトの名無しさん:2009/08/25(火) 10:54:48
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
     ̄


844 :デフォルトの名無しさん:2009/08/25(火) 11:13:10
Staticとかそういう明示的なことをしない場合、
C#でインスタンス化したメソッドは抜けているのに
メモリが確保されたままっていうことはありますか?

フォルダ内の数千ファイルを読み込んで
内容をDBに登録するだけのプログラムなんですが
30分ほど放っておくとメモリがタスクマネージャ上で2Gとかになっています(起動時50MB程度)
ファイル読み込みループ内でファイルのIOクラスとデータベース登録クラスをインスタンス化しているので,
新しいファイルを読み込むたびに前回までのメモリが解放されているイメージなのですが,
この認識って間違っていますでしょうか?

845 :デフォルトの名無しさん:2009/08/25(火) 11:13:45
> ルートって普通rootのこと指すから
そんなこと無いと思うけど。
ttp://e-words.jp/w/E383ABE383BCE38388E38387E382A3E383ACE382AFE38388E383AA.html

846 :デフォルトの名無しさん:2009/08/25(火) 11:34:18
>>845
きみは何が言いたいのか?

847 :デフォルトの名無しさん:2009/08/25(火) 11:37:59
>>841-843
こいつらは誰に対していってんのか

848 :デフォルトの名無しさん:2009/08/25(火) 11:46:09
>>847
どうみても>>840でしょ。
>>840がいってることは正しい。
馬鹿(>>841-843)はスルーしたほうがいいよ。

849 :デフォルトの名無しさん:2009/08/25(火) 11:46:41
>>846
>>840の文脈から理解出来ないの?説明するつもりはない

850 :デフォルトの名無しさん:2009/08/25(火) 11:49:15
空気悪いね

851 :デフォルトの名無しさん:2009/08/25(火) 11:51:06
昨日VSスレに居た荒しがこっちに流れてきたか?

852 :デフォルトの名無しさん:2009/08/25(火) 11:59:51
rootはルートだろ
838が言ってるのはそりゃ「経路」だ

853 :デフォルトの名無しさん:2009/08/25(火) 12:01:27
>>846じゃないが

>そんなこと無いと思うけど。
といっているのに、リンク先の内容は
> ルートって普通rootのこと指すから
と同じことが書かれていると思われるんだが。

854 :デフォルトの名無しさん:2009/08/25(火) 12:04:20
route
root


855 :デフォルトの名無しさん:2009/08/25(火) 12:22:11
TreeViewでrouteという単語は一切使用されていない。

856 :デフォルトの名無しさん:2009/08/25(火) 12:30:51
わざわざ調べたのか…。

857 :デフォルトの名無しさん:2009/08/25(火) 12:32:00
>>844
C#の世界では通常メソッドはインスタンス化されない。クラスはされるけどな。

ファイルを読み込むってことは、Stream関係のオブジェクトが開放されてないんじゃないの?
アンマネージドなデータを含んでるオブジェクトは明示的にDispose()してやる必要があるよ。
もしくはusing構文を使うかだ。

858 :デフォルトの名無しさん:2009/08/25(火) 15:06:04
>>838
「ノードAが展開されている」というのは、簡単に言うと「ノードAの子ノードが見える状態」であって、
「ノードAが見える状態」ではない。

このことは理解してる?
因みに、理解していて>>838の質問なら>>840(前半)に帰結する。

859 :デフォルトの名無しさん:2009/08/25(火) 16:37:41
>857
ストリームをCloseしてるだけでDisposeしていませんでした.
メモリ使用量は気持ち減った感じですが,
まだ上がり続けているので,もうちょっとソース見てみます

ありがとうございました

860 :デフォルトの名無しさん:2009/08/25(火) 16:53:03
DataTable SrcTable = チョメチョメ;
DataTable NewTable = SrcTable.Clone();
foreach( DataRow Target in SrcTable.Select( "ColName < 1" ) )
 NewTable.ImportRow( Target );
チョメチョメ = NewTable;

これをLinqはどのように書くのでしょうか?


861 :デフォルトの名無しさん:2009/08/25(火) 17:37:17
一応managedだからこのスレでいいのだろうと思うので
MFCでDLLを作ってそれをC++/CLIでラップしました
次にそれをC#やVB.netから呼び出したいのだけど文字列ですね
const char *みたいなものにSystem.Stringのデータが渡せないって怒られます
どうやって変換すればいいんでしょう?
配布するものなんで言語環境に依存しない形で呼び出せるようにしたいのですが

862 :デフォルトの名無しさん:2009/08/25(火) 17:44:18
>>861
よくねえよ。C++/CLIスレがあるからそっちいけ

String^で受けてmarshal_as<std::string>

863 :デフォルトの名無しさん:2009/08/25(火) 17:58:19
>>860
DataViewでFilterとToTable使った方が楽だと思うけど
なぜあえてLINQ?

864 :デフォルトの名無しさん:2009/08/25(火) 18:47:38
>>863
LINQを使う(覚える)のが目的でした。
LINQ使えばこの手の処理がかなり簡素にできるのかなと。
構造体のlistならサンプルでなんとなくわかった(ような気がする)
のですがDataTableの場合、項目名をどう書けばよいのかわか
りませんでした。


865 :デフォルトの名無しさん:2009/08/25(火) 20:00:44
>>859
StreamはCloseだけでも大丈夫だよ。
正確には大丈夫ではないが、今回の現象に関しては。
※もちろんusingなどを使って確実にDisposeするのが正しい。

DBアクセス用のクラスの方の、接続とかの管理(Close)は大丈夫なのか?


866 :デフォルトの名無しさん:2009/08/25(火) 20:02:16
ただ、普通に考えて2G使うってのはちょっとおかしいな。
Disposeとかだけの問題でもなさそうな気がするな。


867 :デフォルトの名無しさん:2009/08/25(火) 20:12:57
>>864
型付きかどうかで変わるけど、
var table = (from row in table.AsEnumerable()
             where row.Field<int>("ColName") > 15
             select row).CopyToDataTable();
ただのDataTableならこんな感じ
AllowDBNullならnullチェックが必要になるが

868 :デフォルトの名無しさん:2009/08/25(火) 20:41:19
>865-866
レスありがとうございます

プロジェクト全体に「Stream」で検索掛けて関係ありそうなのは全部Close Disposeかけました
(StreamReaderなども)
DBに関しては
DbConnection,DbTransactionのClose Dispose
DbCommandのDispose
を徹底しました

でもまだ使用率が上がってます
現在1G使用率を上げるのに2時間かかるかんじです
(ファイルサイズがバラバラなので変化には誤差があるのでしょうが)

もうちょいでしょうか...w

869 :デフォルトの名無しさん:2009/08/25(火) 21:02:09
>>862
ツンデレどうもw
とりあえず文字はいけました

870 :デフォルトの名無しさん:2009/08/25(火) 21:06:28
>>868
んー、usingの使い方知ってる?

871 :デフォルトの名無しさん:2009/08/25(火) 21:48:32
あちこち弄る前にプロファイラで現状を把握すべき

872 :デフォルトの名無しさん:2009/08/25(火) 23:01:02
まあ多分プロファイラよりもコードレビューしてもらうのが先なレベルの気もする。
別にプロファイラで見るのもいいんだけど。


873 :デフォルトの名無しさん:2009/08/25(火) 23:21:10
SQLでビューを作成し、できたSQLをC♯内にコーディングしました。
これって、linqだと簡単にできるの?

874 :デフォルトの名無しさん:2009/08/25(火) 23:28:29
いや特に

875 :デフォルトの名無しさん:2009/08/25(火) 23:46:01
LINQに対して夢を抱きすぎじゃねえのか

876 :デフォルトの名無しさん:2009/08/26(水) 00:12:20
LINQ悪くないんだけど遅いんだよな。

877 :デフォルトの名無しさん:2009/08/26(水) 00:31:17
鯖で使うんでなければ大した問題にはならないでしょ
鯖で使うのは微妙

878 :デフォルトの名無しさん:2009/08/26(水) 01:02:57
LINQって糖衣構文なだけじゃないの?
展開すると最適化のきかない冗長なコードになるのかな?

879 :デフォルトの名無しさん:2009/08/26(水) 01:14:19
>>878
デリゲート呼び出し分のコストはかかるんで、全部インライン展開した場合と比べると5%くらい遅いことはある。
まあ、あと、変なクエリを ToArray() せずに使うと毎回クエリしなおしで遅くなることもあるけど。


880 :デフォルトの名無しさん:2009/08/26(水) 01:39:12
5%が「鯖で使うのは微妙」なくらい遅いの?

一部の人はどこかのブログとかををうのみにして先入観持ってる気がする

881 :デフォルトの名無しさん:2009/08/26(水) 09:48:01
>>870-872

usingの使い方は知っていますが、接続を切るタイミングは動的にしないといけない事情がありましたので使ってません。

あとメモリリークの原因分かりました
http://support.microsoft.com/kb/418376/ja
ファイルがXMLでかつ
XSL、DTDの指定があったとき
WebBrowserで読み込んでInnerTextを拾ってくる使用でした.
プロファイラで見たときにWebBrowserのメモリがガンガン上昇していったので気付きました。
XMLDocumentで同じようなことができないか試してみます。


882 :デフォルトの名無しさん:2009/08/26(水) 09:57:26
| 回避策
| WebBrowser コントロールを利用しているアプリケーションを定期的に終了させて下さい。

うわお
>>881

883 :デフォルトの名無しさん:2009/08/26(水) 10:18:14
844からWebBrowserは想像できねーよw

884 :デフォルトの名無しさん:2009/08/26(水) 10:53:13
>>883
たぶん、紙にでもならない限りむりだろうなw。

885 :844:2009/08/26(水) 10:54:27
>883-884
すみませんw
まさかここで引っかかってると思いもしなかったので

886 :デフォルトの名無しさん:2009/08/26(水) 12:32:13
>>885
>すみませんw

なんだよ最後の草はバカにしてるのか

887 :デフォルトの名無しさん:2009/08/26(水) 13:01:17
牛乳飲め

888 :デフォルトの名無しさん:2009/08/26(水) 14:01:37
C++みたいに、引数で渡したオブジェクトの中身は触らないよ!みたいな指定って出来ませんか?


889 :デフォルトの名無しさん:2009/08/26(水) 14:02:11
void FuncA() { Console.WriteLine("A"); }
void FuncB() { Console.WriteLine("B"); }
void FuncC() { Console.WriteLine("C"); }

Action x;
Action y;

x += FuncA;
x += FuncB;
x += FuncC;
y = x;

x -= FuncB; // FuncAとFuncCが残る
y -= x; // FuncBだけ残るはず
y();

Bだけ表示されると思ったのですが、A, B, C全て表示されました。
x -= FuncAやx -= FuncCにした場合は、ちゃんとAだけCだけ表示されます。
なぜでしょうか?

890 :デフォルトの名無しさん:2009/08/26(水) 14:34:38
delegate の -= はコンパイル時に Delegate.Remove に解決される。
で、Delegate.Remove の解説はこれ。
> value の呼び出しリストが source 呼び出しリスト内の隣接している一連の要素と一致する場合は、
> source の呼び出しリスト内に value の呼び出しリストが含まれていると見なされます。
> value の呼び出しリストが source の呼び出しリスト内に複数回出現する場合は、
> 最後に出現した呼び出しリストが削除されます。

x -= FuncB すると x には FuncA, FuncC というリストが残る。
y は FuncA, FuncB, FuncC というリストだから、
「リスト内の隣接している一連の要素」に一致しなくなる。

891 :デフォルトの名無しさん:2009/08/26(水) 14:47:11
>>888
必要とされる理由がないので無い

892 :デフォルトの名無しさん:2009/08/26(水) 15:00:03
>>888
俺もそれ欲しいんだけどなあ。
Dictionaryとか参照だけさせたいときは読み取り専用ラッパで包むしかないんだろうか。

893 :デフォルトの名無しさん:2009/08/26(水) 16:28:23
>>867
ありがとう。参考にさせてもらいます。
思ったより長くなるんですね

894 :デフォルトの名無しさん:2009/08/26(水) 17:22:34
>>891
このメソッドに渡すこのインスタンスは中身が変更されるんだろうか?
って気になることあるじゃんか

サマリーに明記するしかないのかね
例外なんかはサマリーにかけるよね

895 :デフォルトの名無しさん:2009/08/26(水) 17:39:42
そういう場合インスタンス渡さないから気にならないなあ。

896 :デフォルトの名無しさん:2009/08/26(水) 17:59:29
何でもかんでもListとか要求する関数とか書いてそうだな>>892>>894

897 :デフォルトの名無しさん:2009/08/26(水) 18:33:51
C++でconstを活用してない人は疑問に思わないんだろうな

898 :デフォルトの名無しさん:2009/08/26(水) 18:39:25
次はフレンドクラス作れるようにしろとでも言い出すのかよ
バカか

899 :デフォルトの名無しさん:2009/08/26(水) 18:42:19
馬鹿ですけど何か文句あるか?

900 :デフォルトの名無しさん:2009/08/26(水) 18:45:45
>>896
で、こういう場合C#ではどうするの?

901 :デフォルトの名無しさん:2009/08/26(水) 18:46:37
>>897
学習能力衰えた脳筋はC++から出てくんなハゲ。

902 :デフォルトの名無しさん:2009/08/26(水) 18:49:24
>>900
例となるメソッドとクラスを提示してくれよ。

903 :デフォルトの名無しさん:2009/08/26(水) 19:05:34
C#でやるならIReadOnlyHogeとその派生のIHoge(クラスでもいいけど)を作るのが自然だと思う。
C++のconstの概念は、実質的にそういう2つのクラスを作っているも同然だって。

まあ、IList<T>とその周辺はそういう風になっていないけどさ。

904 :デフォルトの名無しさん:2009/08/26(水) 20:09:16
ほしいのは分かるけど現実には間違いなく使いこなせずどつぼにはまる原因になるからいらない。


905 :デフォルトの名無しさん:2009/08/26(水) 20:36:28
いいかげんHogeはやめてHageにしようよ。ハゲ氏も賛成すると思うよ。

906 :デフォルトの名無しさん:2009/08/26(水) 21:04:16
Hageだと口に出すとき困る。

907 :デフォルトの名無しさん:2009/08/26(水) 21:09:13
仕事でDLLのコードをある部署から受け継いだのですが、いたるところに継承クラスを使っているのですが
なぜこのようにするのか全くわかりません。
継承するときのメリットとは何でしょうか?
単純にClass{Class{}}してしまうのはよくないのでしょうか?

908 :デフォルトの名無しさん:2009/08/26(水) 21:14:36
>>906
吐き捨てるように言えばおk

909 :デフォルトの名無しさん:2009/08/26(水) 21:42:33
C♯の本、
皆さんは何を中心に使われましたか?
秀和の、技555ですか?

910 :デフォルトの名無しさん:2009/08/26(水) 21:45:15
秀和はない

911 :デフォルトの名無しさん:2009/08/26(水) 21:48:55
ListViewでサムネイル表示したいんですけど256*256が限界なんですか?

912 :デフォルトの名無しさん:2009/08/26(水) 21:52:16
WinFormだとそうだな

913 :デフォルトの名無しさん:2009/08/26(水) 21:53:53
>>912
どうもありがとう
何かほかの方法探してみます。

914 :デフォルトの名無しさん:2009/08/26(水) 22:51:01
>>907
ありきたりの答えだけど、共通の処理を手っ取り早く共通化できることだろうな。
インターフェースを実装して委譲させればいいんだけど、一々やってるのが
メンドイ場合もある。
インターフェースにメソッドが山ほどあって、かつ兄弟が山とある場合とか。
具体的にはWindows.Formsのコントロール群かなんかみたいな場合。
(Formsがやってるかという話じゃなく、ああいった感じでクラスを山ほど
作らなければならなくなったらという話)

915 :デフォルトの名無しさん:2009/08/26(水) 22:54:54
>>909
他の言語触った事あるなら、解説サイト見るだけでいいような気も。
C++の時は4、5冊買ったけどC#は0冊。俺の能力云々じゃなくて
言語(+開発環境)として、かなりとっつき易いと思う。

916 :デフォルトの名無しさん:2009/08/26(水) 23:09:04
C++とJavaやってたからMSDNだけで十分だった。
70-536の時にスキルチェック問題集買ったのが唯一。

917 :デフォルトの名無しさん:2009/08/26(水) 23:24:21
C++/CLI で本を一冊読んだ以外は、ネットか MSDN だけで事足りてるな今のところ。

918 :デフォルトの名無しさん:2009/08/26(水) 23:32:52
MSDNの書きぶりには中々慣れないな・・・。
まだまだ初心者の域を出ていないからだろうけど。

919 :デフォルトの名無しさん:2009/08/26(水) 23:38:51
がんばれ

920 :デフォルトの名無しさん:2009/08/27(木) 00:03:59
「WROX」シリーズのC♯の解説書を読んだ方おられますか?
洋書です。

921 :デフォルトの名無しさん:2009/08/27(木) 00:44:31
C#(SQLSERVER)のDBプログラムおそくね?
デルファイ+パラドックスより登録UpDATE遅いんだけど
なんで?
退化してるような
神様おしえてプリーズ

922 :デフォルトの名無しさん:2009/08/27(木) 00:47:26
接続型のDBってテキストファイル読むときだけに使うんでしょうか
非接続型がメインですよね?
接続型のDBと非接続混合させてプログラム組んでる人いますか?
接続型のメリットはなんでしょう?
SQL書けるところ?

923 :デフォルトの名無しさん:2009/08/27(木) 00:52:54
>>922
>非接続型がメイン
んなこたーない。要するにDOMとSAXの関係みたいなものだと思ってるが。

924 :デフォルトの名無しさん:2009/08/27(木) 01:04:03
>>920
Wroxからは山ほど出てるわけだが・・・
あのわら半紙は耐え難い

925 :デフォルトの名無しさん:2009/08/27(木) 01:49:53
>>896
ダメ?
なんか別スレでもコレクションの批判を見たんだが、
最近はそんな風潮になってきてんの?
このコレクション厨が!みたいな論調で具体例も何もなかったんだけど。

926 :デフォルトの名無しさん:2009/08/27(木) 02:02:38
>>925
まあ、人に公開するんでなければ何でもいいと思うけどな。
参考までに、>>896はコレクションのインターフェイスを使ったイイカンジのコードを紹介してくれるとありがたい。

927 :デフォルトの名無しさん:2009/08/27(木) 02:16:35
>>896じゃないけど。。
List<>渡したいけど勝手に追加・削除されたくない時はとりあえず

private List<int> lis = new List<int>();
public void DoAll( Action<int> func )
{
  foreach (int data in lis)
  {
    func(data);
  }
}
↑こんなの用意して、こう使ってる↓

this.DoAll( delegate( int iData )
{
  // 何か処理
});

intの代わりに読み込み専用のインタフェースになる場合も。

928 :デフォルトの名無しさん:2009/08/27(木) 03:28:05
ReadOnlyCollectionじゃダメなの?

929 :デフォルトの名無しさん:2009/08/27(木) 05:07:28
質問です
public class person
{
public string 人名;
public List<日詳細データ> 詳細 = new List<日詳細データ>();
}

public class 日詳細データ
{
public float 身長;
public float 体重;
public datetime 日付;
}
List<person> データ = new List<person>();

詳細を増やすにはどうすればいいのでしょうか?



930 :デフォルトの名無しさん:2009/08/27(木) 08:18:56
>>923
DOMとSAXふむふむ
つまり速度重視は接続型
使いやすさ重視は非接続型
・・・と言うことでしょうか?
違うかな?

931 :デフォルトの名無しさん:2009/08/27(木) 08:28:43
>>930
というか、ちょっと前にまったく同じ質問が出てるから。
ここの回答で気に入らないなら、自分で比較記事を探せ。

932 :デフォルトの名無しさん:2009/08/27(木) 08:31:09
>>931
探してみます
ありがとうございます

933 :デフォルトの名無しさん:2009/08/27(木) 09:17:16
コレクション前提の話になってるが、配列渡す時も同じことが言えるし、
クラス作成のパラメータが多い場合に補助的に使うクラスとかあるよな
そういうのが内部で書き換えられない事が外部でわかると便利ってことだろ

構造体にすりゃいいんだろうけどコピーのコストをかけたくない場合に
C++でいうconst参照渡しやconst参照返しが欲しいことはある

まあC#はC++みたいな最適化は出来ないってことであきらめるしかないのかな

934 :デフォルトの名無しさん:2009/08/27(木) 12:39:56
getだけ定義したインターフェースを引数にすれば、内部で変更しないという意図が伝わると思うのだけど?
コレクション・配列の場合は、Clone・ReadOnlyのWrapper・Indexでアクセスする必要がないなら列挙子を受け取ればいい。

935 :デフォルトの名無しさん:2009/08/27(木) 13:54:53
> コレクション前提の話になってるが、配列渡す時も同じことが言えるし
配列だってIList<T>を実装してるんだから、特別に考える必要はないだろ。

> まあC#はC++みたいな最適化は出来ないってことであきらめるしかないのかな
最適化というより、契約プログラミングじゃない?
constを付けたところで、他の参照やスレッドから変更される可能性は残るんだし。

個人的には、spec#がC#と統合されれば、
C++のconstが欲しいなんて思う事はなくなるんじゃないかと期待してる。

936 :デフォルトの名無しさん:2009/08/27(木) 14:38:55
値を返すと重いが参照を返すと変更されるのが怖い
const参照なら両方の問題が解決できる

スレッドはまた別の話だろ

937 :デフォルトの名無しさん:2009/08/27(木) 15:02:06
うっかりミスを防ぐ為にコンパイラでチェックできるだけでいいんだけどなあ

938 :デフォルトの名無しさん:2009/08/27(木) 15:37:11
いずれにせよ今更constを言語仕様に取り込むことは不可能なんだから
議論も愚痴も無駄無駄

939 :デフォルトの名無しさん:2009/08/27(木) 15:54:46
他人はもちろん俺自身も信用できない(ミスする可能性がある)から
const付け忘れる奴が出ないように、設計の段階で制限する方がいいと思うんだけどなぁ…
ReadOnlyとかにしとけば、実装時にうっかりミスで変更しちゃうような事は起きないでしょ

const付けるべき個所で付いてないとか、そもそも使ってないようなやつを一杯見てきたわけで…もう戻りたくない。

940 :デフォルトの名無しさん:2009/08/27(木) 15:57:53
ReadOnlyCollection

941 :デフォルトの名無しさん:2009/08/27(木) 16:15:35
C# 4.0の共変、反変との相性を考えても
IReadOnlyList<out T> は欲しいな。

942 :デフォルトの名無しさん:2009/08/27(木) 16:26:05
スレの進行に反するかもしれないが、constを使わなかったせいで困ったためしなどほとんどないな。
他人のソースをいじるときは、それに反しない範囲で帳尻を合わせることならあるが。

943 :デフォルトの名無しさん:2009/08/27(木) 16:36:32
C++の話をしてるのか?
C++でconst使わないとかどんなプログラム書いてんだと言いたいが

944 :デフォルトの名無しさん:2009/08/27(木) 17:00:45
どんなプログラムってそりゃconstを使わないプログラムだろが

945 :デフォルトの名無しさん:2009/08/27(木) 17:21:07
質問がなくて暇なのは分かるが、いつまで議論するんだよw

946 :デフォルトの名無しさん:2009/08/27(木) 17:21:10
先の見えない議論だなあ

947 :デフォルトの名無しさん:2009/08/27(木) 17:44:05
readonlyのことが大好きです

948 :デフォルトの名無しさん:2009/08/27(木) 19:10:24
プロパティの違反について教えてください。
MSDNにはプロパティで配列を返すと怒られますよと書いているのですが
実際記載されているコードを実行してもエラーも起きず配列が正常に帰ってきます。
http://msdn.microsoft.com/ja-jp/library/0fss9skc.aspx

一体どのような状況でエラーとなるのか、それともこのエラーは解消されたのかを教えてください。
コンパイルはC# 3.0,3.5の両方です

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1(){InitializeComponent();}
private void button1_Click(object sender, EventArgs e)
{
string[] s = { "test_1", "test_2" };
Book a = new Book(s);
System.Diagnostics.Debug.Print(Convert.ToString(a.Pages.GetValue(0)));
}
}
public class Book
{
private string[] _Pages;
public Book(string[] pages){_Pages = pages;}
public string[] Pages{get { return _Pages; }}
}
}

949 :デフォルトの名無しさん:2009/08/27(木) 19:16:13
【×】プロパティで配列を返すと怒られますよ
【○】プロパティで配列を返さないでください

950 :デフォルトの名無しさん:2009/08/27(木) 19:21:04
左のツリーを上に辿ればだれが出す警告か分かるよ

951 :デフォルトの名無しさん:2009/08/27(木) 19:59:52
>>932
LANは非接続型
スタンドアロンは非接続型、接続型どっちでもいいが正解です!

952 :デフォルトの名無しさん:2009/08/27(木) 20:17:24
>>949
ということは、別に警告は出さないけどお勧めしないってことですね。
MSDNの規則を見ても「書き込みからの保護の保証がない」ってだけみたいですが、一応規則にそってコレクションで返すことにします。
ありがとうございましたー。

953 :デフォルトの名無しさん:2009/08/27(木) 22:51:02
チェックボックスの□をラジオボタンの○にするにはどうすればいいですか?

954 :デフォルトの名無しさん:2009/08/27(木) 22:55:08
>>953
だからラジオボタンのAutoCheck = false。
何度も同じこと聞くなよ。
っていうか、これも前も言ったが普通はできてもやらないよそんな糞動作は。

955 :デフォルトの名無しさん:2009/08/27(木) 23:16:44
jpgファイルのあるフォルダとないフォルダを分けたいと考えています。
string[] directories = (@"c:\photo", "*", SearchOption.AllDirectories);
string photodirectories;
string emptydirectories;
foreach (string directory in directories){
if (File.Exists(directory + @"\*.jpg")) photodirectories = photodirectories + directory;
else emptydirectories = emptydirectories + directory;
}
ところが、directory + @"\*.jpg"では、jpgファイルのあるフォルダをリストできないみたいです。
ぜんぶelseになっています。
条件の設定方法をご教示ください。


956 :デフォルトの名無しさん:2009/08/27(木) 23:27:15
File.Existsのどこにワイルドカードが使えるという記述が
標準ライブラリ内ならDirectory.GetFiles使う

957 :デフォルトの名無しさん:2009/08/27(木) 23:28:04
なんで普通にDirectoryInfoとかFileInfoとか使わないの

958 :デフォルトの名無しさん:2009/08/28(金) 00:13:14
string[] objects = {"cat","dog","mouse"}
int Number = objects.Length - 1;
ですが、
IEnumerable<string> objects
の場合、長さはどうやって取得しますか?


959 :デフォルトの名無しさん:2009/08/28(金) 00:14:17
全部列挙してみないと分からない。

960 :デフォルトの名無しさん:2009/08/28(金) 00:17:54
どうやって列挙すれば?


961 :デフォルトの名無しさん:2009/08/28(金) 00:28:37
LINQでCountするのが一番楽。
LINQ使えないならforeachしながら数える。

962 :デフォルトの名無しさん:2009/08/28(金) 00:44:23
LINQは使ったことがありませんので、
foreach (var object in objects){
Number++;
}
してみました。
これでOK?


963 :デフォルトの名無しさん:2009/08/28(金) 00:45:40
LINQだと運がいいとO(n)ではなくO(1)でCountを求めてくれることもある
forループだと必ずO(n)

964 :デフォルトの名無しさん:2009/08/28(金) 01:27:25
>>962
使ったことあるなしは関係ないよ、ただのメソッドだし。
VS2005ならそれでやればいいし、
VS2008ならCount()を使えばいい。

965 :デフォルトの名無しさん:2009/08/28(金) 03:00:22
FileStreamを使用したファイルアクセスについて教えてください。

現在、1プロセス内でマルチスレッドを使用して処理を行うプログラムを作成しています。
各スレッドの処理結果を1つのログファイルに出力しようとしているのですが、
複数スレッドがログファイルにアクセスするため、排他手段としてFileStreamインスタンスの
作成時、FileShare.None指定で作成することにしました。
しかし、MSDNライブラリを見たところFileShare.None指定は「他プロセスからのアクセスを禁止する」
となっており、1プロセス内でのアクセスは制限されないと読み取れてしまいます。

1プロセス内でのマルチスレッドの場合、排他機能としてはFileShare.None指定は意味が無い
のでしょうか?

もし意味が無いのであれば、上記の場合のファイル排他としてはどのような方法が望ましいのでしょうか?
よろしくお願いします。


966 :デフォルトの名無しさん:2009/08/28(金) 03:10:26
それぐらい実際に試せばすぐ分かると思うけど
プロセスもスレッドも関係なく後続は開けなくなる

排他のためにShare.Noneは取り回しが悪いと思うけど

967 :デフォルトの名無しさん:2009/08/28(金) 03:47:26
>>966
後学のために教えてほしいのですが、>>965のような場合にファイル排他をする場合、C#としてはどうするのが一般的なのでしょう?
fileShare.Noneくらいしか思いつかなかったもので…。

968 :デフォルトの名無しさん:2009/08/28(金) 04:16:00
>>965
というか、ファイルに排他処理入れるんじゃなくて、
出力処理をシリアル化してひとつのFileStreamオブジェクトに任せればいいんじゃね?

969 :デフォルトの名無しさん:2009/08/28(金) 05:55:59
>>968
ほかのアプリとの排他考えたらファイルに排他制御かけないとダメなことない?


970 :デフォルトの名無しさん:2009/08/28(金) 06:11:09
FileShare.Noneにした上で、プロセス内で独自に排他制御しなきゃいけないだろうけど、
素直にTrace周りを使った方が

971 :デフォルトの名無しさん:2009/08/28(金) 06:32:25
1つのログファイルに色んなアプリケーションが書き込みすんのか・・・?

972 :デフォルトの名無しさん:2009/08/28(金) 06:58:09
マルチスレッドってバッグランドワーカーを上手に(処理の手順考えて
デットロック喰らわないように、ブロックしたりして)使えば同じじゃないのかな)
どうせCPU100%使えんだろうし(てゆうか100%使ったらPCフリーズしそうだけど)

973 :デフォルトの名無しさん:2009/08/28(金) 07:02:44
日本語でOK

974 :デフォルトの名無しさん:2009/08/28(金) 07:39:10
オレもTraceを使うことに賛成だな。manifestで出力先や出力範囲を変えられるので便利。
ただ標準のインターフェイスはやや使いにくいので、アプリ全体で使いまわすstaticなラッパーを通してる。

975 :973:2009/08/28(金) 08:15:07
>>973
マルチスレッドとバッグランドワーカーは別モノって事ですねあるね

976 :デフォルトの名無しさん:2009/08/28(金) 10:27:57
cobol経験しかないですが、
c#で勤怠管理システムを作成するにはどれくらいの期間が必要でしょうか。
私の能力次第だとは思いますが、
一般的にc#がモノになってプロジェクトに参画できるようになるにはどれくらいかかるのかなと…。

977 :デフォルトの名無しさん:2009/08/28(金) 10:56:04
LINQの質問なんですが
EnumerableRowCollection<DataRow>っていうのは、Union出来ないんでしょうか?
下のコードで何がしたいかと言うと、既にフィルタされてるテーブル dtLog と
現在のテーブル dtでOR検索させたいと思ってます。

※dt と dtLog = DataTable、clm = ColumnName、queryは検索文字列です。
-----------------------------------------------------------------
EnumerableRowCollection<DataRow> linq =
  from row in dt.AsEnumerable()
  where (row.Field<string>(clm) != null) && (row.Field<string>(clm).Contains(query))
  select row;

EnumerableRowCollection<DataRow> linq2 =
  from rowLog in dtLog.AsEnumerable()
  select rowLog;

EnumerableRowCollection<DataRow> linq3 = linq.Union(linq2);
-----------------------------------------------------------------
↓上記コードで出たエラー
---------------------------------------------------------------
型 'System.Collections.Generic.IEnumerable<System.Data.DataRow>' を
'System.Data.EnumerableRowCollection<System.Data.DataRow>' に暗黙的に変換できません。
明示的な変換が存在します。(cast が不足していないかどうかを確認してください)
----------------------------------------------------------------

LINQの型をIEnumerable<DataRow>で定義しておいて
Unionさせて最後に(EnumerableRowCollection<DataRow>)
にキャストにしてみたのですがキャスト出来ませんでした。
解決方法分かる方いましたら教えてください。

978 :デフォルトの名無しさん:2009/08/28(金) 11:21:55
var

979 :デフォルトの名無しさん:2009/08/28(金) 11:31:33
>>976
まずはCOBOLを綺麗さっぱり忘れることから始めようか

980 :デフォルトの名無しさん:2009/08/28(金) 11:46:39
>>978
最終的にEnumerableRowCollection<DataRow>から
DataTableかDataViewが欲しかったのですが
varだとDataRowと推定されるみたいなのですが
変換出来るんでしょうか?


981 :デフォルトの名無しさん:2009/08/28(金) 11:54:11
CopyToDataTable

982 :デフォルトの名無しさん:2009/08/28(金) 12:04:52
>>981
どうもありがとうございます!
CopyToDataTableでDataTableに変換出来ました。
初心者なんでCopyToDataTableというのを知りませんでした。
ありがとうございました!

983 :デフォルトの名無しさん:2009/08/28(金) 13:58:46
>>976
クラスや継承、それらの必要性さえ解ればC#を憶えるのは割と簡単です。
クラス2つ作って継承させたりして、なんとなく憶えた気になるのは一週間もあれば可能かと思います。
ファイルやデータベースのアクセスも割と簡単です。欲しいと感じる処理はだいたい最初からあります。
コントロールで細かい動作を求められたりするとかなりストレスが溜まります。
小難しいUIの無い部分から参画すればいいと思います。

984 :デフォルトの名無しさん:2009/08/28(金) 14:05:15
俺は980ではありませんが次を立てて参ります

985 :デフォルトの名無しさん:2009/08/28(金) 14:55:14
ビルドとリビルドの用途のちがいはなんすか?
本を見たら、違いが書いてはいますが、どう使い分けるかが書いていませんでした。

986 :デフォルトの名無しさん:2009/08/28(金) 14:57:07
コードの変更がアプリに反映されてなくね? って思ったときは取り敢えずリビルド。

987 :デフォルトの名無しさん:2009/08/28(金) 14:58:37
ふらっとC#,C♯,C#(初心者用) Part44
http://pc12.2ch.net/test/read.cgi/tech/1251439041/

988 :デフォルトの名無しさん:2009/08/28(金) 15:40:35
スレ立て乙

989 :デフォルトの名無しさん:2009/08/28(金) 15:52:11
>>986
ビルドはどういうときにやるの?

990 :デフォルトの名無しさん:2009/08/28(金) 16:21:03
ビルドは変更点だけだから早い

991 :デフォルトの名無しさん:2009/08/28(金) 17:11:02
プロはリビルドばかりやるもんなの?

992 :デフォルトの名無しさん:2009/08/28(金) 17:16:02
どちらも使う。
必要に応じて使い分ける、としか言いようがないな。

993 :デフォルトの名無しさん:2009/08/28(金) 17:20:26
ビルドだと、何かの漏れが起きたりしませんか?
知り合いの独立SEはリビルドしかやらないと言っていました。
ただ彼も、独学でC♯を学んで独立しているので偏りがあるかもしれないです。

994 :デフォルトの名無しさん:2009/08/28(金) 18:30:49
差分コンパイルと完全コンパイルの差なんだけど、
C#だとソースからいきなりアセンブリ(exe, dll)を作るから
コンパイルのスピードにあまり差は出ない。
C++の場合は中間でオブジェクトファイルやコンパイル済みヘッダを
作ったりするからコンパイル時間に差が出るのだが。

995 :デフォルトの名無しさん:2009/08/28(金) 18:37:17
C# で obj ディレクトリの中身を消さずに
別マシンにソリューションごと持って行って
そこでビルドすると変な exe ができたことはあった。
それ以外で中間ファイルが悪さしたことはないわ。

996 :デフォルトの名無しさん:2009/08/28(金) 18:38:02
普段はビルド、コンパイラの警告を見たい時はリビルドしてるな

ビルドだと変更してない部分はコンパイルされないので、
コンパイラの警告が表示されないから

997 :デフォルトの名無しさん:2009/08/28(金) 18:53:29
>>996
リビルドするときもデバッグされるの?

998 :デフォルトの名無しさん:2009/08/28(金) 21:14:13
>>997
ちがう。「コンパイラ」の警告と996は言ってる。

999 :デフォルトの名無しさん:2009/08/28(金) 22:09:57


1000 :デフォルトの名無しさん:2009/08/28(金) 22:10:38


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

238 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)