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

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

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

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

2 :デフォルトの名無しさん:2006/12/16(土) 12:41:43
2Get

3 :デフォルトの名無しさん:2006/12/16(土) 12:42:12
前スレ
ふらっとC♯, C#(初心者用) Part10
http://pc8.2ch.net/test/read.cgi/tech/1162193452/

関連スレ
C♯, C#相談室 Part36
http://pc8.2ch.net/test/read.cgi/tech/1165656839/

4 :デフォルトの名無しさん:2006/12/16(土) 12:42:29
Visual C# Express Edition (無料)ダウンロード
http://www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

.NET Framework SDK (2.0)
http://msdn2.microsoft.com/ja-jp/library/ms310244.aspx

MSDN Visual C# Express Edition フォーラム
http://forums.microsoft.com/msdn-ja/ShowForum.aspx?ForumID=187&SiteID=7
Visual Studio ユーザーグループ
http://vsug.jp/

@IT Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
Insider.NET 会議室 ディレクトリ
http://www.atmarkit.co.jp/fdotnet/index/bbs/index.html

宇宙仮面の C# プログラミング / C# Programming
http://ukamen.hp.infoseek.co.jp/
WisdomSoft C#入門
http://wisdom.sakura.ne.jp/programming/cs/index.html
WisdomSoft Microsoft .NET入門
http://black.sakura.ne.jp/~third/system/msnet/msnet.html
どっとねっとふぁん
http://dotnetfan.org/
緑のバイク 初めてのC# 〜 覚え書き 〜
http://homepage3.nifty.com/midori_no_bike/CS/
どぼん!の .NET Tips
http://dobon.net/vb/dotnet/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html

5 :デフォルトの名無しさん:2006/12/16(土) 12:42:46
Borland C#Builder2006
http://www.borland.com/jp/products/csharpbuilder/index.html

Turbo C#
http://www.turboexplorer.com/csharp

.NET Framework 1.1 製品ドキュメント
http://www.microsoft.com/japan/msdn/library/ja/netstart/html/sdkstart.asp

6 :デフォルトの名無しさん:2006/12/16(土) 12:56:41
>>1

7 :デフォルトの名無しさん:2006/12/16(土) 17:03:01
>>1

8 :デフォルトの名無しさん:2006/12/16(土) 17:55:05
>>1

9 :デフォルトの名無しさん:2006/12/16(土) 18:09:25
>>1

10 :デフォルトの名無しさん:2006/12/16(土) 18:36:00
>>1

11 :デフォルトの名無しさん:2006/12/16(土) 18:50:10
>>1

12 :デフォルトの名無しさん:2006/12/16(土) 18:51:54

  ( ⌒ ) ポッポー
   l | /

⊂(#・∀・)    おつおつうるせーんだよ!!
 /   ノ∪         
 し―-J |l| |
         人ペシッ!!
      (_)
     )(__)(_
    ⌒)   (⌒
      ⌒Y⌒


13 :デフォルトの名無しさん:2006/12/16(土) 19:25:34
>>12

フォームの背景だけを半透明にしてその上に文字をクッキリ表示させたいと思い、
フォームのOpacitを50%にし、そのフォームにLabelを配置したのですが
Labelの文字まで半透明になってしまいます。
何か良い解決方法はないでしょうか?

14 :デフォルトの名無しさん:2006/12/16(土) 19:41:04
>>6-11の流れを止めやがって。
答えてやるもんか。

15 :デフォルトの名無しさん:2006/12/16(土) 19:53:04
('A`)誰かがいつか止めなきゃならんのよ…

16 :デフォルトの名無しさん:2006/12/16(土) 20:14:04
Explorer のようなファイルビュアーを練習で作ってます。
ファイルを開く際には System.Diagnostics.Process#Start を UseShellExecute = true で使おうと考えたのですが、
Start に若干時間がかかるようなので、ThreadPool を使って非同期実行を……と考えたところ、
ThreadPool のような MTAThread からでは Start が使えないってことが分かりました。

そのため、現在は STAThread から Start するように書いてあるんですけど、
単発の Thread を立て続けに作ることに微妙に抵抗あるんですが、何か代替案はありますか?
……というより、もしかして Start 呼び出しを非同期で実行するオプションって用意されてますか?

17 :デフォルトの名無しさん:2006/12/16(土) 21:08:03
>>13
>>12に謝れ!!

18 :デフォルトの名無しさん:2006/12/16(土) 21:19:26
>>13
Opacityを使わないことです。

半透明描画は自前で書くしかありません。

19 :デフォルトの名無しさん:2006/12/17(日) 00:59:48
>>16
直接APIのShellExecuteを呼んだら早くなったりしない?

20 :デフォルトの名無しさん:2006/12/17(日) 04:05:40
C#をビジュアルC#で学ぼうと考えているものです。
プログラミングについてはスーパー初心者です(昔に大学のコンピュータ授業でVisual Basicをいじった程度)。

おすすめの入門書がございましたら教えていただけないでしょうか。

日経ソフトウェアの『ずばりわかる!VB&C#』は他の言語もカバーしているので、C#だけが
目的なら避けたほうが良いのでしょうか・・・

21 :20:2006/12/17(日) 04:14:43
勢いで質問してしまいました。過去レスもあたってみます。

22 :デフォルトの名無しさん:2006/12/17(日) 12:59:02
他スレにて質問したのですが誰も分からなかったので
このスレにて質問させてください。

ブックマークのショートカットに関する質問です。
コードエディタ内部にて行移動をする際に使用する
ブックマークがありますが、

VS2003では

@ Ctrl + K + K マーク    
A Ctrl + K + P 上に移動
B Ctrl + K + N 下に移動
C Ctrl + K + L マークの全削除

が使用出来ていたのですが、VS2005になってから
@Bのみしか使えないのですが、ACのコマンドは変更
(もしくは削除)になってしまったのでしょうか?


23 :デフォルトの名無しさん:2006/12/17(日) 13:46:31
オプション→キーボードで、
コマンドを「ブックマーク」で検索しろ

24 :デフォルトの名無しさん:2006/12/17(日) 15:38:06
VC#2005ExpressEditionを使っています。
よろしかったら教えてください。

「参照の追加」でdllを登録すると、HRESULT型のメソッドは
void型になります。
それらのvoid型のメソッドを使用したとき、メソッドがエラーをしても
void型のためエラーを返しません。
COM.ExceptionでHRESULTの値を取得できるとのことですが、
できませんでした。どうやらエラーとなるときのHRESULTの値が
「Com.Exceptionがエラーと判定する値」とはならないためとのことです。

こうなったら、どうしてもHRESULTの値を取得する必要があると思うの
ですが、どうすればいいでしょうか?もしくはHRESULTの値を取得
できないにしても、上記の場合でエラーを返すようにはできない
でしょうか?


25 :デフォルトの名無しさん:2006/12/17(日) 16:24:05
[PreserveSig]

26 :22:2006/12/17(日) 16:40:28

>>23
ツール⇒オプションでしょうか?
尚、ツール⇒オプションと指定してみたところ
キボードに該当する物はありませんでした。




27 :デフォルトの名無しさん:2006/12/17(日) 17:35:28
え?StartってMTAから使えないの?

28 :デフォルトの名無しさん:2006/12/17(日) 17:50:32
ヘルプにショートカットの説明出るじゃん…
Edit.ToggleBookmark
Ctrl + K、Ctrl + K
現在の行のブックマークを設定または削除します。

これじゃねえの?

29 :22:2006/12/17(日) 18:32:25
>>28
Ctrl + K 、 Ctrl + K
でブックマークの追加(削除)が出来る事は確認済みなのですあg
肝心の既に作成したブックマーク間の移動を行うショートカットが
VS2003では出来ていたのに、VS2005では出来ないのです。

なぜVS2003で出来ていたコマンドがVS2005では使えなくなってしまった
のでしょうか?

30 :デフォルトの名無しさん:2006/12/17(日) 18:48:33
>>29
そういうことはMSFTの中の人に訊いてこいよ。

31 :デフォルトの名無しさん:2006/12/17(日) 19:01:18
ツール→オプション→環境→キーボードってあるじゃん…
Ctrl+B,N Ctrl+B,P これのことか?

32 :22:2006/12/17(日) 22:44:07
>>31
出来ました!!!
マジでありがとうございます!!!!


>>30
次回からそうします。

33 :デフォルトの名無しさん:2006/12/17(日) 22:48:01
>>32
>>31で書いてあるのは自分で好きなように設定編集可能だぞ?

34 :デフォルトの名無しさん:2006/12/17(日) 22:51:08
MSはキーボードショートカットたまに変えるからなあ

OSの終了ショートカットも変えやがったしな。

35 :22:2006/12/17(日) 23:16:23
>>33
自分で編集することも出来るのですね。
調べてみます。

尚、Ctrl + L (VS203ではブックマークの全削除)
こちらのショートカットについてはご存知でしょうか?


36 :デフォルトの名無しさん:2006/12/17(日) 23:18:51
>>35
>>30,33を読め


37 :22:2006/12/17(日) 23:26:45


>>36
調べましてブックマーク削除方法も分かりました。
どうもありがとうございました^^;



38 :デフォルトの名無しさん:2006/12/18(月) 15:39:12
DataAdapterでDatasetを取得する際に進行状況を確認することはできますか?
プログレスバーを作りたく思っているのですが...。

39 :デフォルトの名無しさん:2006/12/18(月) 18:56:25
ASP.NETでC#で使っているのですが
フラグ処理をするのに

if( A&B ) {
}

とすると〜〜型をBoolに暗黙的に変換できません とごねられます。
お手軽に if( A&B ) で文句を言われないようにする
方法はありませんでしょうか?



40 :デフォルトの名無しさん:2006/12/18(月) 19:02:36
>>39
無い

41 :デフォルトの名無しさん:2006/12/18(月) 19:05:55
if((A&B)!=0)じゃだめなの?

42 :デフォルトの名無しさん:2006/12/18(月) 19:14:13
>>41
その != 0 を書きたくないのです・・・

boolに変換する暗黙の型変換も試してみましたが
フラグが出てくるたびに定義するのもあほらしく・・・

素直に!=0でやってみます。


43 :デフォルトの名無しさん:2006/12/18(月) 19:59:35
static bool IsTrue(int frag)
{
return flag != 0;
}

if (IsTrue(A&B))
とか

44 :デフォルトの名無しさん:2006/12/18(月) 20:12:48
なんで書きたくないの?

45 :デフォルトの名無しさん:2006/12/18(月) 20:21:08
C#使ったことない通りすがりなんだけど
if(!!(A&B))
ってのは駄目?

46 :デフォルトの名無しさん:2006/12/18(月) 20:23:54
>>45
意味不明

47 :デフォルトの名無しさん:2006/12/18(月) 20:30:48
よくわからんけど
intと暗黙で変換とれて
各種ビット演算とtrueとfalseがオーバーライドしてある
構造体でも作ればいいんじゃねーの?
だめか?

48 :デフォルトの名無しさん:2006/12/18(月) 20:42:33
>>47
ifの中ではboolに暗黙変換しようとするから、
if ((IntBool)(A&B)) { }
みたいにしないといかんのじゃね?

49 :デフォルトの名無しさん:2006/12/18(月) 20:54:21
お前ら本当にC#使いなのか?

50 :デフォルトの名無しさん:2006/12/18(月) 21:07:59
if( A&B ) {
}

A、Bの型は結局何なんだ?
モデリング失敗したのか。

51 :デフォルトの名無しさん:2006/12/18(月) 21:17:45
C#初心者へ
if( )の中はちゃんとboolにしろよ。

if-else (C# リファレンス)
if ステートメントは、Boolean 型の式の値に基づいて、実行するステートメントを選択します。


52 :デフォルトの名無しさん:2006/12/18(月) 21:20:37
お前らのソースを後輩がメンテナンスするとき見て笑うぞ。

53 :デフォルトの名無しさん:2006/12/18(月) 21:35:10
>>52
このレベルに後輩いないだろwww
あっ!化石が必死に食いつこうとしてんのかwww

54 :デフォルトの名無しさん:2006/12/18(月) 21:39:54
if (A==B) と if (A=B) の間違いでのバグ混入を避けるために明確にboolとintは分けてある。
Cでもコンパイル時の最適化で(A&B) と (A&B) != 0の違いはなくなるので後者で書くことも多いよ。
あえてやるなら >>47のいってる方法だが、激しくめんどくさい。

struct boolbits {
  public boolbits(int i) { bits = i; }
  public int bits;
  public static bool operator true(boolbits b) { return b.bits != 0; }
  public static bool operator false(boolbits b) { return b.bits == 0; }
  public static boolbits operator&(boolbits b1, boolbits b2) { b1.bits &= b2.bits; return b1;}
  public static boolbits operator|(boolbits b1, boolbits b2) { b1.bits |= b2.bits; return b1;}
  public static boolbits operator~(boolbits b) { b.bits = ~(b.bits); return b; }
  // 他にもキャスト演算子とかetc実装汁
}

55 :デフォルトの名無しさん:2006/12/18(月) 21:45:14
>>54も化石だな。お疲れ様。

if文の論理判定がCの負の遺産から解き放たれようとしているのに…

フラグがboolじゃ無い時点でおかしいと思わないの???
プロパティでもなんでも使え!

56 :デフォルトの名無しさん:2006/12/18(月) 21:52:05
>if;(A==B) と if(A=B) の間違いでのバグ混入を避けるために
>明確にboolとintは分けてある。

違うんじゃない?
今までCのインチキ論理型から脱却するためだろ。


57 :デフォルトの名無しさん:2006/12/18(月) 21:58:08
あえて言うとフラグ判定で、
if((A&B)!=0)みたいに書かせないためにBoolになってるんだと思う。
直感的に分かりくいところはバグの温床だからね。

58 :デフォルトの名無しさん:2006/12/18(月) 22:03:06
フラグの種類にも夜とおもふ。

59 :デフォルトの名無しさん:2006/12/18(月) 22:07:22
むしろifを使わない

delegate void Statement();
static void If(int expression, Statement onTrue, Statement onFalse){
if (expression != 0) onTrue(); else onFalse();
}

If(A&B, delegate(){...}, delegate(){...});

60 :デフォルトの名無しさん:2006/12/18(月) 22:12:52
>>59
余計に判りにくいなwww

61 :デフォルトの名無しさん:2006/12/18(月) 22:41:05
[Flags]付きenumとかはどーなるんだ
やっぱ現代では行き場の無い肩身の狭い子なのか

62 :デフォルトの名無しさん:2006/12/18(月) 23:06:54
ttp://msdn2.microsoft.com/ja-jp/library/c8f5xwh7(VS.80).aspx
より…

>C++ では、bool 型の値を int 型の値に変換できます。
>つまり、false は 0 と等価であり、true は 0 以外の値と等価です。
>C# では、bool 型とその他の型は変換できません。

2行目の部分はそのうち一部の人(化石)にしか通じなくなるよ。


63 :デフォルトの名無しさん:2006/12/18(月) 23:28:39
やっぱJAVAスレのほうが活気があるな。
なんとかこっちも盛り上がらんかなあ。

64 :デフォルトの名無しさん:2006/12/18(月) 23:29:56
でもどうせ[Flags]付きenumなんかあるんだったら
ビットの上がり下がりを判定する汎用メソッドが欲しかった。
intとbool分けたんだったらさ。

if( ( enumHage & EnumHAGE.HOGE ) == EnumHAGE.HOGE ) {...

とかって美しくない……

if( enumHage.NanikaMethod( EnumHAGE.HOGE ) ) {...

みたいなかんじで

65 :デフォルトの名無しさん:2006/12/18(月) 23:37:13
have演算子(何だそりゃ)のほうが面白いと思うw

if( enumHage have EnumHAGE.HOGE ) {...

66 :デフォルトの名無しさん:2006/12/18(月) 23:38:16
C#3.0のextension methodsでできるんじゃないの?

67 :デフォルトの名無しさん:2006/12/18(月) 23:40:07
化石ってまだ腐乱死体くらいのつもりだったのだが・・・
[Flags]付きenumでも != 0を使うことになりまする。
FlagsAttributeはC#ではToString以外に何か影響することはあるのかいな。

>>54 に追加
  public static explicit operator int(boolbits b) { return b.bits; }
  public static implicit operator boolbits(int i) { return new boolbits(i); }
intからの変換は暗黙で、逆はバグ呼びそうなので明示キャストにしてみました。

68 :デフォルトの名無しさん:2006/12/18(月) 23:41:26
msdnのFlagsAttribute クラスの説明で
>場合によっては、フラグを結合するために使用されるビットごとの OR 演算は、
>単純なタスクには必要のない高度な概念と見なされます。
微妙だな。
なんなんだろう。


でも元の話ってこういうパターンなのかな。

69 :デフォルトの名無しさん:2006/12/18(月) 23:44:19
if( EnumHAGE.HOGE in enumHage ) {...
でどうだあああ

70 :デフォルトの名無しさん:2006/12/18(月) 23:46:37
もうif(フラグの配列.Contains(Hage.Hoge))でいいやん

71 :デフォルトの名無しさん:2006/12/18(月) 23:49:05
まだやってたんすか…
先輩…

ビット演算&の結果がboolになることが気持ち悪いと思うようにならないとダメっすよ。

72 :デフォルトの名無しさん:2006/12/18(月) 23:50:40


&&

73 :デフォルトの名無しさん:2006/12/19(火) 00:02:18
>>66
迷惑だと思うよ。
extension methods自体最悪だという噂が。

74 :デフォルトの名無しさん:2006/12/19(火) 00:16:30
>>59
Excelかよ。

75 :デフォルトの名無しさん:2006/12/19(火) 00:34:12
>>68
なんかなぁ。
設定とかで、一つの項目にbool割り当てると罪悪感かんじるんだよなぁ
byteで8個持ったほうが気持ちいいんだよぉ
そいでREG_BINARYで保存。これ。


76 :デフォルトの名無しさん:2006/12/19(火) 00:41:30
びんぼうしょう。

77 :デフォルトの名無しさん:2006/12/19(火) 00:59:04
>>75
ご老人

78 :デフォルトの名無しさん:2006/12/19(火) 01:36:59
今byteサイズとかmethod呼び出しのパフォーマンスとか
抜かしてくる奴とやってるからマジムかつくわ・・・

Cに篭っててください、ほんとお願いします。

79 :デフォルトの名無しさん:2006/12/19(火) 07:36:11
それにしても[Flags]enumもつかいにくいよな。
ビット演算つかわなきゃならんなんて旧世代のにおいがする。

delegateみたいに、+とか-で結合できるような仕組みを用意してくれればよかったのに。

80 :デフォルトの名無しさん:2006/12/19(火) 12:15:51
>>78
逆に効きたいんだけど、状態をフラグで定義しないで
状態全部Boolにしたりするの?



81 :デフォルトの名無しさん:2006/12/19(火) 13:49:53
そうだよ。それがC#流。
別にメモリや速度の効率を求めてC#使ってるわけじゃないんだろ?

82 :デフォルトの名無しさん:2006/12/19(火) 16:26:34
バカが沸いてるな

83 :デフォルトの名無しさん:2006/12/19(火) 16:29:41
いまだにフラグに数値使ってるやつとかいるわけ?

84 :デフォルトの名無しさん:2006/12/19(火) 16:29:50
大量にインスタンス生成するならまだしも普通はフラグ使わんな。

85 :デフォルトの名無しさん:2006/12/19(火) 17:06:29
使うよ

86 :デフォルトの名無しさん:2006/12/19(火) 17:08:01
P/Invokeするときくらいだろ?

87 :デフォルトの名無しさん:2006/12/19(火) 17:10:57
ちょっと疑問に思ったのですが、getだけのプロパティとメソッドってなにか違いはありますか?

88 :デフォルトの名無しさん:2006/12/19(火) 17:18:59
機能の上ではほとんど違いはない。

目的が値の取得か処理かで使い分ければいい。

89 :デフォルトの名無しさん:2006/12/19(火) 17:30:24
引数必要なければあまり変わらない。

90 :デフォルトの名無しさん:2006/12/19(火) 17:32:24
×バカが沸いてるな
○バカが湧いてるな

91 :デフォルトの名無しさん:2006/12/19(火) 17:41:01

public int DoSomething[int arg] {
    get{ Console.Write(arg); return 0; };
}

DoSomething[774];

92 :デフォルトの名無しさん:2006/12/19(火) 17:41:50
>>87
プロパティのgetアクセサはコンパイルでインライン展開されるらしい

93 :デフォルトの名無しさん:2006/12/19(火) 17:42:13
以前クラスライブラリでTextRendererのところを見てたらフラグを使うメソッドがあった。
こういう設計してるとこもあるんだなぁと印象的だった。
こういうのってWin32APIをラップでもしてるの?

94 :デフォルトの名無しさん:2006/12/19(火) 17:50:32
>>93
yes.

95 :デフォルトの名無しさん:2006/12/19(火) 18:04:41
Bool値でもフラグなんですけど。。。

96 :デフォルトの名無しさん:2006/12/19(火) 22:11:53
質問させてください。

int とInt16、Int32、Int64ってどんなときに使い分ければいいのですか?
違いがよく分からないので今はintを使ってるのですが・・・

97 :デフォルトの名無しさん:2006/12/19(火) 22:20:34
>>96
必要がある時に使えばいいんですよ
まだあなたには必要が無いんです

98 :デフォルトの名無しさん:2006/12/19(火) 22:21:37
>>96
intはInt32の別名。

簡単に述べると格納できる数値の最大値がちがう。

99 :96:2006/12/19(火) 22:44:09
なるほど単なる別名だったんですね、てことはInt64はlongの別名ってことですね。

ありがとうございます

100 :デフォルトの名無しさん:2006/12/19(火) 23:07:06
>>99


101 :デフォルトの名無しさん:2006/12/20(水) 00:42:59
C/C++経験はあって、XNAのためにC#を勉強中です。
メモリの開放がいまいちよくわからないので教えてください。

class Foo; があったとして、
public Foo hogehoge;
と書けば、Foo型のポインタができますよね。

そこで、実体を作るために、newします。
hogehoge = new Foo();
hogehogeにメモリが割り当てられます。

このとき、割り当てられたメモリを破棄し、新しくメモリを確保したいとします。
その場合、
・hogehoge = new Foo();
を行えば、元々hogehogeが持ってたメモリの参照回数がゼロになり、開放扱いになるのでしょうか?
もしくは、
if ( hogehoge != null ) hogehoge.Dispose();
みたいな処理がいるのでしょうか?

お願い致します。


102 :デフォルトの名無しさん:2006/12/20(水) 00:46:05
>>101
C#ではアンセーフな文脈以外ではポインタという言葉は使わない。

メモリはガーベジコレクタが管理してるから、プログラマが明示的に開放することはできない。
スコープから外れたオブジェクトは勝手に消されていく。

103 :デフォルトの名無しさん:2006/12/20(水) 00:46:10
>>101
ほっとけばいつかはメモリが開放される
開放されるタイミングを知ることはできないし知る必要もない

104 :デフォルトの名無しさん:2006/12/20(水) 00:48:25
>>101
IDisposableなオブジェクトはusingとか使ってちゃんとDisposeしといてね

他は適当に放っておけばそのうち開放されてる

105 :101:2006/12/20(水) 01:10:14
ありがとうございます。

class Foo の場合メモリ廃棄は自動、
class Foo : IDisposableの場合は、 hogehoge.Dispose()を呼ぶ

ということですね。
早速やってみます・・・


106 :デフォルトの名無しさん:2006/12/20(水) 01:13:28
一般にIDisposable.Disposeで開放されるのはファイルポインタとかのアンマネージドリソースね。
オブジェクト自体は他と同じようにガベッジコレクションで消される。

107 :デフォルトの名無しさん:2006/12/20(水) 01:17:12
>>105
ファイルとかのシステムリソースは、そのうち開放される、じゃ困るから。
要らなくなったらDispose()を呼んで明示的に開放する。

108 :デフォルトの名無しさん:2006/12/20(水) 01:51:48
>>105
注意しなきゃいけないのは、IDisposable であってもメモリ破棄は自動であることと、
Dispose() を呼ばなくても、大抵の場合(いつかは)アンマネージドリソースが破棄される(であろう)ということ。

他の人の回答と合わせて読んでくれ。

109 :デフォルトの名無しさん:2006/12/20(水) 02:16:55
>>101
ちなみに、.NET Framework のガベコレは参照カウンタじゃないよ。

110 :デフォルトの名無しさん:2006/12/20(水) 02:19:35
ここは個々のレスはワンポイントアドバイスのような細切れだが、
あわせて読むとどこぞの解説サイトよりずっとよくわかるな。

いつもありがたく勉強させてもらってます。

111 :101:2006/12/20(水) 02:26:21
ありがとうございます。

.Dispose()はアンマネージドなリソースの開放。
クラス領域は自動開放っていうことですね。

まとめ?

class First : IDisposable

class Second
{

}


112 :101:2006/12/20(水) 02:26:51
やべ、間違えて送信してしまった・・・


113 :101:2006/12/20(水) 02:27:37
まとめ?

class First : IDisposable

class Second
{

}

114 :デフォルトの名無しさん:2006/12/20(水) 02:37:48
>>101落ち着け

115 :101:2006/12/20(水) 02:41:04
なんか、キーバインドがぶっ壊れてるw

まとめ?

---- 要点 ----
・C#ではメモリの開放は自動(マネージド)
・Disposeはアンマネージド部分の開放用

---- 使用例 ----
・class First : IDisposable
を書く場合。(アンマネージドリソースを直接使用する場合)
public void Dispose()を用意する。その中でアンマネージドリソースを開放。

・class Second : First
を書く場合。(アンマネージドリソースを継承元のみで使用する場合)
そのままでOK。(Dispose()が継承されるので、それを呼び出してもらう)


class Third
{
First Foo;
Third() { Foo = new First(); }
~Third() { Foo.Dispose(); }
}
メンバとして、IDisposableクラスを利用したい場合、
自分が、IDisposableである必要はない(Disposeも用意しない。)
デストラクタに書いておけば、Thirdオブジェクト終了時に、同時にDispose()される。

こんな感じでしょうか・・・・


116 :デフォルトの名無しさん:2006/12/20(水) 02:42:52
IDisposable を実装する場合では
protected virtual void Dispose(bool disposing)
も用意するのが定石

117 :デフォルトの名無しさん:2006/12/20(水) 02:45:12
Dispose メソッドの実装
ttp://msdn2.microsoft.com/ja-jp/library/fs2xkftw(VS.80).aspx

118 :101:2006/12/20(水) 02:54:49
ありがとうございます。
朝までがんばるぞー!




119 :デフォルトの名無しさん:2006/12/20(水) 02:55:44
>>115
FooをファイナライザでDisposeしてちゃだめでしょ。
ThirdもIDisposableを実装して、IDisposable.DisposeでFoo.Dispose()を呼ばないと。

120 :デフォルトの名無しさん:2006/12/20(水) 03:02:16
>>119
>>117

121 :デフォルトの名無しさん:2006/12/20(水) 09:37:47
ぶっちゃけC#の利点って何ですか?なんか吐き出したプログラムから
ソース辿られちゃうみたいだし、VBなんかに比べた時の優位性がよくわかりません
VBやろうかC#やろうか迷ってるんで教えてください

122 :デフォルトの名無しさん:2006/12/20(水) 09:49:51
あいのこの VB.NET にしとけば

123 :デフォルトの名無しさん:2006/12/20(水) 10:07:17
a

124 :デフォルトの名無しさん:2006/12/20(水) 11:03:41
クマー

125 :デフォルトの名無しさん:2006/12/20(水) 11:09:48
>>121
J#すごいよ。

126 :デフォルトの名無しさん:2006/12/20(水) 11:15:10
C#m7(b5)

127 :デフォルトの名無しさん:2006/12/20(水) 11:38:17
>>121
まあ、後から作られてる分きれいなくらい?
基本的に VB.NET とできること一緒だし。

128 :デフォルトの名無しさん:2006/12/20(水) 11:39:16
ぶっちゃけVB.NETの利点って何ですか?なんか吐き出したプログラムから
ソース辿られちゃうみたいだし、C#なんかに比べた時の優位性がよくわかりません
C#やろうかVB.NETやろうか迷ってるんで教えてください

129 :デフォルトの名無しさん:2006/12/20(水) 11:39:58
やはり今日日VBというとVB.NETのことなのか?

130 :デフォルトの名無しさん:2006/12/20(水) 13:31:19
この手の議論はこっちで。

つ【VB.NET】VS2005 選ぶならどっち?【C♯】

131 :デフォルトの名無しさん:2006/12/20(水) 16:11:13
>>121>>128
VB.NETにしてもソースを辿られるのはC#と同じ。
.NetやるならC#がベスト。

132 :デフォルトの名無しさん:2006/12/20(水) 17:21:35
System.Diagnostics.Process.Start()使って
メディアプレイヤー開いてファイルパス入れようとすると
スペースで途切れちゃって駄目なんだけど、
これ何とかする方法ないすかね?
たとえばデスクトップのmp3開こうとすると
C:\Documentsで止まっちゃって読めない。

133 :デフォルトの名無しさん:2006/12/20(水) 18:21:54
@"""C:\Documents and Settings\hoge\デスクトップ\hage.mp3""";


134 :132:2006/12/20(水) 19:38:52
>>133
サンクス!

135 :デフォルトの名無しさん:2006/12/21(木) 22:29:44
txtファイルをexeファイルに埋め込みたいのですが、
やり方がいまいち分かりません。
C# リソース 埋め込み
でもググって見ました。
やり方もしくは参考になるサイトがありましたら教えてください

136 :デフォルトの名無しさん:2006/12/21(木) 23:00:40
張っていいのかな?
ttp://dobon.net/vb/dotnet/programing/bitmapresource.html

137 :デフォルトの名無しさん:2006/12/21(木) 23:40:29
>>135
釣ですか。
同じキーワードでググって見たけど…

138 :デフォルトの名無しさん:2006/12/21(木) 23:43:56
なんでtxtファイルを埋め込みたいの?
static stringとか,設定ファイルじゃダメなの?

139 :デフォルトの名無しさん:2006/12/21(木) 23:44:31
C# text リソース 埋め込み

140 :デフォルトの名無しさん:2006/12/21(木) 23:49:12
ttp://homepage3.nifty.com/midori_no_bike/CS/filesys.html

141 :デフォルトの名無しさん:2006/12/21(木) 23:53:31
ttp://support.microsoft.com/kb/319292/ja

142 :デフォルトの名無しさん:2006/12/21(木) 23:57:46
>>141
ちょwwwそのタイトルwww

143 :デフォルトの名無しさん:2006/12/21(木) 23:58:56
機械はすばらしいいいいい!

144 :デフォルトの名無しさん:2006/12/21(木) 23:59:48
How to embed and access resources by using Visual C#
Visual C#を使用すると、どのように埋め込んで、アクセス リソースには

どこが「には」になるんだろうな

145 :デフォルトの名無しさん:2006/12/22(金) 00:01:10
>このため、有効な埋め込まれたリソースとしてアプリケーションの期間の間、
>変更されないファイルを含みますのみ。

146 :デフォルトの名無しさん:2006/12/22(金) 00:03:18
どこの会社のソフトを使ってるんだろうな。

MSって機械翻訳の技術もってたっけ?

147 :デフォルトの名無しさん:2006/12/22(金) 00:05:02
yahoo Japan翻訳。

Visual C#を用いて資源に埋め込んで、アクセスする方法

148 :デフォルトの名無しさん:2006/12/22(金) 01:36:52
>>144
toだろ

149 :デフォルトの名無しさん:2006/12/22(金) 06:32:49
こんな自動翻訳なら、やらない方がましな気がする

150 :デフォルトの名無しさん:2006/12/22(金) 09:50:37
C#でActiveXコントロール作れますか?

151 :デフォルトの名無しさん:2006/12/22(金) 10:06:51
>>149
超同意

152 :デフォルトの名無しさん:2006/12/22(金) 10:52:54
タイトルはひどいが本文はそうでもないな。


153 :デフォルトの名無しさん:2006/12/22(金) 10:56:26
>>150
はい。

154 :デフォルトの名無しさん:2006/12/22(金) 12:23:45
こんなレベルでも(といっても本文は割りとまともだけど)、
日本語文書がないよりはあった方がいいって意見が多いからやってるみたいよ。
MS の文書は量多すぎて、人手による翻訳は無理みたい。
訳すよりも新しい文書が出てくるペースの方が速い。

まあ、Google への日本語インデックス登録にもなるしね。
日本語検索 → この怪しい機械翻訳ページに到着
 → 見れた代物じゃないから原文の英語を読む。

タイトルだけ変なのは、この手の記事見出しって普通と文法違うからね。
述語がないとか冠詞は省略するとか。
「ここは見出しです」って感じのメタデータ持って、
翻訳エンジンに渡すとかしないとまともな翻訳難しいかも。

155 :デフォルトの名無しさん:2006/12/22(金) 12:28:08
世界のマイクロソフトがあの程度の技術しか持っていないのはどうなんだって気もするが。


Amikaiでも買収してください。

156 :デフォルトの名無しさん:2006/12/22(金) 12:29:01
>>154
> まあ、Google への日本語インデックス登録にもなるしね。

原文と見比べないと意味がわからないことも多いけど、
確かに検索で見つけやすくなる効果はあるね。
なるほどとオモタ。

157 :デフォルトの名無しさん:2006/12/22(金) 13:18:31
本文は機械でも,せめてタイトルくらいは人間が確認すればいいのに

158 :デフォルトの名無しさん:2006/12/22(金) 13:37:24
>>101からの流れがいまいちつかみきれないので、質問します。
詳細は、おいおい勉強していこうと思いますが、
勘違いしている点だけでも、指摘して頂ければありがたいです。

【質問】
Dispose()の呼び出しは必須ですか?

【自分の理解】
例えば、Penオブジェクトを使用する場合、
「Dispose()メソッドは出来るだけ呼べ、但し、必須では無い。」
と考えてました。

必須でない理由として、
・Penオブジェクトを保持するクラスであれば、そのクラスの参照が無くなった時点で、
 GCが自動解放をする。
・Penオブジェクトを保持するのが、メソッドであれば、メソッドから抜けた段階で、
 GCが自動解放する。

159 :デフォルトの名無しさん:2006/12/22(金) 13:52:27
ほっといてもGCが「そのうち」解放してくれるんだけど,それがいつになるかはわからない。
だから,メソッドを抜けた時点とも,参照がなくなった時点とも限らない。
普通はそれで問題ないんだけど,Penオブジェクトはアンマネージリソースを
外部に確保してるから,それがメモリを圧迫しててもGCが気づいてくれない。
最悪,ほっといてもファイナライザで解放されるんだけど,基本的にDisposeは必須。

160 :158:2006/12/22(金) 14:05:01
>>159
ありがとうございます。

 「解放」がいつ行われるか不明
 「リソース量」の把握が困難

以上より、「基本的にDisposeは必須。」ということですね。
業務では無いため、結構Disposeを軽視していました。 ^^;)

   >>158の質問は終了ということで

161 :デフォルトの名無しさん:2006/12/22(金) 16:38:16
>>154
ま、俺も英語できない方だけど、
なんかのナレッジベースだったか
発狂しそうなほど無茶苦茶な日本語だったよ。
先のサイトは、ましな部類に入るんじゃないかな。

162 :デフォルトの名無しさん:2006/12/22(金) 19:35:23
>>160
Penは不具合??が起こる可能性があるからDisposeが必要。
MSDN(Help)に書いてあるよ。

あとはほとんど気にしなくていいと思う。

163 :デフォルトの名無しさん:2006/12/22(金) 20:05:21
>>162
ホントだ Thx!
Graphics関係は要注意ぽいですね。

今気づいたんだけど、
 Stream系はCloseとDispose(プロテクトメソッドのケースも)の2つがあるんだ。
 Closeは必須だと思ってやってたんだけど…

う〜ん、奥がふかい。やっぱ、優先順位あげて勉強します。

164 :デフォルトの名無しさん:2006/12/22(金) 20:07:59
ごめん
BrushとかもDisposeいるな。
Graphicsはいらないみたい。

165 :デフォルトの名無しさん:2006/12/22(金) 20:11:24
C#のGCはあんまり積極的には動いてくれないから、
Disposeできるもんは使い終わったらDisposeしとけ。
usingブロックを使うと楽。

166 :デフォルトの名無しさん:2006/12/22(金) 20:15:40
そうかなあ。
あんまり気にする必要ないとおもうよ。

usingブロック多用は逆に良くないと思うが。

167 :デフォルトの名無しさん:2006/12/22(金) 20:19:16
ならそうすれば

168 :デフォルトの名無しさん:2006/12/22(金) 20:57:19
プログラミング .NETFramework中のP484に、

重要:
GCがよくできてるから、それに任せた方がいいので、
一般論として、DisposeまたはCloseメソッドの呼び出しを
強制するのは勧めない

と書いてありました。

初、中級者は、ヘルプに明記されている場合を除いて、
あまり気にしなくていいというところですかね。

169 :デフォルトの名無しさん:2006/12/22(金) 21:08:59
気にしなくていいならIDisposableを実装していないんじゃないの?

170 :デフォルトの名無しさん:2006/12/22(金) 21:14:28
cのfree論争みたいだなw

171 :デフォルトの名無しさん:2006/12/22(金) 21:20:12
ファイルハンドルのCloseだけはすぐにやってもらわないと困るだろ。

172 :デフォルトの名無しさん:2006/12/22(金) 21:20:57
・CGはメモリがきつくなるまでは動かない。
・IDisposableを実装しているということはアンマネージリソースを抱えている可能性が高い。
・なので、Disposeできるものは使い終わったら速やかにDisposeするべき。
・例外でDisposeの呼び出しがスキップされてしまうのを防げるので使える場面ではusingを使うとすっきり。

173 :デフォルトの名無しさん:2006/12/22(金) 21:23:21
Disposeを実施するメリットがある場合もあるのかと
メリット、デメリットは処理内容にもよるし

安全方向に振れば、実装するんじゃない

174 :デフォルトの名無しさん:2006/12/22(金) 21:37:51
>>164
自分でDCから作ったGraphicsはちゃんとDisposeしないとDCハンドル溜まっていくよ。

175 :デフォルトの名無しさん:2006/12/22(金) 21:54:42
ttp://uchukamen.com/Programming/GC/index.htm

176 :デフォルトの名無しさん:2006/12/22(金) 22:41:06
ところで,~MyClass(){this.Dispose(false);}以外の
ファイナライザの使い道はあるの?

177 :デフォルトの名無しさん:2006/12/22(金) 23:05:11
エクスプローラに表示される、ファイルの説明見たいのを変えるにはどうしたらいいのでしょうか?
これです↓
http://lkjoe.hp.infoseek.co.jp/cgi-bin/file/1166796250.jpg

178 :デフォルトの名無しさん:2006/12/22(金) 23:15:47
スレ違いだが

レジストリの
HKEY_CLASSES_ROOT\.拡張子 の既定の値
→その名前のHKEY_CLASSES_ROOT\直下のキーの既定の値


179 :デフォルトの名無しさん:2006/12/22(金) 23:18:18
どれが表示されるか、というのなら
QuickTipとかInfoTipとかDetailsで検索

180 :177:2006/12/22(金) 23:20:13
例が不適切でした。
アプリごとに自由に変えられますよね?↓
http://lkjoe.hp.infoseek.co.jp/cgi-bin/file/1166797172.jpg


181 :デフォルトの名無しさん:2006/12/22(金) 23:24:47
例が不適切というか、
おまえの理解力が不適切だ


182 :デフォルトの名無しさん:2006/12/22(金) 23:27:17
やっと意味が分かった
ソリューションのPropertiesからアセンブリ情報を編集
あるいはAssemblyInfo.csを手書きで編集

どうでもいいけど、ファイルの拡張子は表示した方がいいよ

183 :デフォルトの名無しさん:2006/12/22(金) 23:42:59
>>177
[assembly: AssemblyDescription("ここに説明")]


184 :デフォルトの名無しさん:2006/12/22(金) 23:51:12
Form1とForm2があります。
Form1


185 :184:2006/12/23(土) 00:02:07
184は間違いです・・・

Form1とForm2があります。
Form1とForm2には↓のようにコントロールを置いてあります。
ずれているかもしれませんが・・

┌Form1───   ┌Form2───
|     |   |     |
|comboBox1 |   |textBox1 |
|     |   |button1  |
└─────┘   └─────┘

ここで、Form2のbutton1が押されたら、Form2のtextBox1の内容を
Form1のcomboBox1に追加したいのですが、
下記のコードでは追加できません。

Form1 f1 = new Form1();
f1.comboBox1.Items.Add(textBox1.Text);

どうしたら追加できるでしょうか?お願いします。



186 :184:2006/12/23(土) 00:03:46
やはり激しくずれていました・・
逝ってきますorz

187 :デフォルトの名無しさん:2006/12/23(土) 00:12:34
>>185
>Form1 f1 = new Form1();
>f1.comboBox1.Items.Add(textBox1.Text);

このコードで作ってるf1と、実際表示してるForm1のインスタンス(実体)とは
これっぱかりも関係がない。

どこかで、表示してるForm1のインスタンスへの参照を
Form2のインスタンスに渡してやって、それに対して操作すればおけ。

「クラス」と「インスタンス」について学ばれたし。

188 :デフォルトの名無しさん:2006/12/23(土) 00:18:01
//Form1.cs
public void AddString( string str )
{
 this.comboBox1.Items.Add( str );
}
--------------------------------------------
//Form2.cs
public Form1 fom1; // これにForm1へのインスタンスへの参照をどこかで入れる

...
this.form1.AddString( this.textBox1.Text );
...




189 :184:2006/12/23(土) 00:24:19
>>187
>>188
早速ありがとうございました!インスタンスへの参照についてぐぐってみます。

190 :184:2006/12/23(土) 03:28:55
戻ってきました。
参考になりそうなページを見つけたのですが、>>188さんの作ってくれた
コードと照らし合わせてもどこに何を書けばいいか分からなくて・・

参考にしたのは下記のページです。
http://dobon.net/vb/dotnet/form/accessanotherformdata.html

便宜上Form2と言いましたが実はForm3なのでForm2とForm3を置き換えて
読んで頂けると幸いです。

Form3に書くForm1へのインスタンスへの参照はこれであってますか?
(コピペですが)

public Form1 f1;

//Form1オブジェクトを保持するためのフィールド
private static Form3 _form3Instance;

//Form1オブジェクトを取得、設定するためのプロパティ
public static Form3 Form3Instance
{
get
{
return _form3Instance;
}
set
{
_form3Instance = value;
}
}


191 :184:2006/12/23(土) 03:29:51
つづきです



で、これがあっているか分かりませんが、呼び出し方が分からなくて・・。
何度か試してもオブジェクト参照がオブジェクトインスタンスに設定されてません
って出るので・・
すみませんが、もう少し具体的に教えてほしいです。
お願いします。


192 :184:2006/12/23(土) 04:05:00
すみません。事故解決しました。

Form1に

Form3 f3 = new Form3();
f3.f1 = this; ←ココを足した
~~~~~~~~~~~~~ 
f3.Show();

Form3に

public Form1 f1;

で出来ました。

難しく考えすぎていたみたいです。
ありがとうございました。

193 :デフォルトの名無しさん:2006/12/23(土) 16:59:09
最近の宿題はC#なんだろうか・・・いい迷惑だ

194 :デフォルトの名無しさん:2006/12/23(土) 17:22:03
ググレば例はいくらでもあるのでそっちにまかせる。
まずはインスタンスについて理解しよう。

195 :デフォルトの名無しさん:2006/12/23(土) 17:23:34
すまぬ、最新見てなかった…

196 :デフォルトの名無しさん:2006/12/23(土) 19:01:49
>public static Form3 Form3Instance

前もこんな書き方する奴がいたが同一人物ですか?

個人的にはこの書き方は非常に気持ち悪いし、
内容を理解しているのか気になる。

197 :デフォルトの名無しさん:2006/12/23(土) 19:11:09
フォームがシングルトンであるなら別に問題ないんじゃね
プロパティ名はどうにかしてほしいが。

198 :デフォルトの名無しさん:2006/12/23(土) 19:11:38
>>197

199 :デフォルトの名無しさん:2006/12/23(土) 19:15:38
犯人はDOBON.NET


200 :デフォルトの名無しさん:2006/12/23(土) 19:20:01
シングルトン?

201 :デフォルトの名無しさん:2006/12/23(土) 19:23:43
いまさらだけど
http://dobon.net/vb/dotnet/form/accessanotherformdata.html
のやり方へんじゃないか?

202 :デフォルトの名無しさん:2006/12/23(土) 19:23:43
ジョン・シングルトン

203 :デフォルトの名無しさん:2006/12/23(土) 19:28:17
美しくないのは確か

204 :デフォルトの名無しさん:2006/12/23(土) 19:31:13
どちらかと言うとkitanai

205 :デフォルトの名無しさん:2006/12/23(土) 19:39:58
初心者の方、あれはシングルトンじゃないですよ。
目的のインスタンス参照をstaticに参照できるようにしただけ。

global変数の復活だ!
Gofもシングルトン広めて有罪扱いされてたよね。

206 :デフォルトの名無しさん:2006/12/23(土) 19:44:04
所謂パターンじゃなくて単に1個ないっていう意味で使ったんじゃないの?
一応普通の英単語だし。

つか、それなら関数型言語使っとけよ。

207 :デフォルトの名無しさん:2006/12/23(土) 19:46:01
なんかやたらと変な脱字が多い。脳が溶けてるのかしらw
1個「しか」ね。


208 :デフォルトの名無しさん:2006/12/23(土) 19:51:43
>Form1.Form1Instance.TextBoxText = "こんにちは。";

身近にこんなコードかいてる奴したら確実にシバク。

209 :デフォルトの名無しさん:2006/12/23(土) 20:18:40
VB出身のやつでそういうコード書きたがる奴なら腐るほど

210 :デフォルトの名無しさん:2006/12/23(土) 20:28:14
>>201
そこ書いてる奴もVB屋じゃね?

211 :デフォルトの名無しさん:2006/12/23(土) 20:30:53
IDEがとりあえず名前を付けてくれるにしても、もっとすごい名前を付けたほうが良いと思う。
AutoGeneratedName1 とかさw

212 :デフォルトの名無しさん:2006/12/23(土) 20:32:56
>>208
ちゃんと動くのになんの問題が?

213 :デフォルトの名無しさん:2006/12/23(土) 20:36:18
>>212
その発想が既に化石

214 :デフォルトの名無しさん:2006/12/23(土) 20:37:02
>>211
FormFoo
FormBar
FormBaz
FormQux
 :

215 :デフォルトの名無しさん:2006/12/23(土) 20:37:33
>>213
化石はこんなコード書きません。

216 :デフォルトの名無しさん:2006/12/23(土) 20:44:19
>>213
化石じゃない発想はどういうのよ。
そのまま使っても誰も文句言わないような素敵な名前を付けてくれるとか?

217 :デフォルトの名無しさん:2006/12/23(土) 20:44:41
クラス名の後に数字はつけないほうがいいよ。
ideがインスタンスに変な名前付けるから。

Form1 → form11
UserControl1 → UserControl11

218 :デフォルトの名無しさん:2006/12/23(土) 20:45:54
>>216
化石って、命名についていってるわけじゃないと思うが

219 :デフォルトの名無しさん:2006/12/23(土) 20:47:45
>>218
そうなのか。ぜんぜんわからん。どうやら化石らしいorz

220 :デフォルトの名無しさん:2006/12/23(土) 20:53:54
>>217
Form1_ → form1_1
UserControl1_ → UserControl1_1

解決。

221 :デフォルトの名無しさん:2006/12/23(土) 21:06:20
5種類の仕事と5人の人がいて、5種類の仕事を行うコストが個人で異なる。
この様な場合、誰にどの仕事を行わせることがもっとも低コストで仕事が
行えるか求めるフローチャートを作成しなさい、計算方法は、全ての組み合わせ(順列)を求める。その中から最も低コストとなる仕事の割り当てを得る(腕ずく法;Brute Force Method)。なお、最低コストが複数ある場合は、最後に判明した組み合わせのみを表示すればよい。
人1人2人3人4人5
仕事A10、5、7、12、8
仕事B14、20、15、10、15
仕事C18、30、20、25、22
仕事D35、8、18、20、12
仕事E20、13、8、10、17

初めて、プログラムに触ったので バカです。
できる方、教えてください


222 :デフォルトの名無しさん:2006/12/23(土) 21:07:43
>>221
だから宿題スレ池屑

223 :デフォルトの名無しさん:2006/12/23(土) 21:08:02
>>221
そういうことは友達か先輩に聞け!

もうプログラム板にすら来るな。
不愉快だ!
半年ROMってろカス!!!!

224 :デフォルトの名無しさん:2006/12/23(土) 21:09:58
手当たり次第にマルチだし
>初めて、プログラムに触ったので バカです。
知らないだけのバカじゃなくて正真正銘池沼だろうな・・・

225 :デフォルトの名無しさん:2006/12/23(土) 21:10:38
いいことを教えてやろう。

ここはC#スレで C#はCではありません。

226 :デフォルトの名無しさん:2006/12/23(土) 21:11:04
Cすら関係なくね?

227 :デフォルトの名無しさん:2006/12/23(土) 21:14:15
多分宿題だろ。

c#で課題は出ないとおもう。
多分CかJAVAあたりのはず。


228 :デフォルトの名無しさん:2006/12/23(土) 21:16:22
他人のなりすましかも?
この板IDでないし。

俺もどこかに貼ってこようか♪

229 :デフォルトの名無しさん:2006/12/23(土) 21:17:15
>>227
おもう、多分

230 :デフォルトの名無しさん:2006/12/23(土) 21:28:05
>>220
レビューで読み上げたら思いっきり馬鹿にされそうだなw


231 :デフォルトの名無しさん:2006/12/23(土) 23:20:24
C#で作ったライブラリをCOMとして呼び出したいのですが
Visual C# 2005 Express Edition で "COM相互運用機能の登録"をチェック、ビルドし、
他のプロジェクトから参照しようとすると

'ClassLibrary'への参照を追加できませんでした。
ActiveXタイプライブラリ'〜〜\ClassLibrary.tlb'が.NETアセンブリからエクスポートされましたが、参照として追加できませんでした。
.NETアセンブリへの参照を追加してください。

と出ます。
いじめですか?
どうすれば解決しますか?

232 :デフォルトの名無しさん:2006/12/23(土) 23:23:14
いじめです。

233 :デフォルトの名無しさん:2006/12/23(土) 23:25:55
>>231
そんなんならんけど。

234 :デフォルトの名無しさん:2006/12/23(土) 23:26:34
最近おなじのをどっかの掲示板で見たな
そいつは返答もらってたのに放置してたが

235 :デフォルトの名無しさん:2006/12/23(土) 23:28:51
>>231
いじめです。止めてくださいって言えば止めてくれるでしょう

236 :デフォルトの名無しさん:2006/12/23(土) 23:30:49
ゲイシにいじめを止めないと自殺するって手紙送るとか

237 :231:2006/12/23(土) 23:34:04
もう何度もやめてくれと言いました。
Google先生に相談したけどダメでした。

238 :デフォルトの名無しさん:2006/12/23(土) 23:44:27
プロパティー
Application
アセンブリ情報
アセンブリをCOM参照可能にする

で逝けない?

239 :デフォルトの名無しさん:2006/12/24(日) 00:03:19
>238
"アセンブリをCOM参照可能にする"のチェック、非チェックどちらでもダメでした。

240 :デフォルトの名無しさん:2006/12/24(日) 00:12:09
つーかC#で作ったライブラリなら
ふつうにCOMじゃなくて.Netとして参照に追加

241 :231:2006/12/24(日) 00:21:20
>240
最終的にActiveXコントロールとしてIE上で動かしたいので
.NETじゃなくCOMでいきたいのです

仕方ないので、手作業で登録しようとしたのですが
Visual C# インストールディレクトリ下に regasm.exe が見当たりません
これが何か関係しているでしょうか?

242 :デフォルトの名無しさん:2006/12/24(日) 00:24:02
それはシステムディレクトリの方にあるような

243 :デフォルトの名無しさん:2006/12/24(日) 00:24:30
,NET のアセンブリを COM 参照はできない。

はい次。

244 :デフォルトの名無しさん:2006/12/24(日) 00:35:40
そのライブラリは.NETとして参照して、
本体をCOMとして登録すればいいだけの話だろ

245 :231:2006/12/24(日) 00:44:45
>244
そんなことできるんですか!
.NET、COMでの開発経験がないので分かりませんでした
どのようにすればできますか?

246 :デフォルトの名無しさん:2006/12/24(日) 00:50:09
そのライブラリは.NETとして参照して、
本体をCOMとして登録すればいい

としか。

そもそも本体はCOMとして登録できてんの?
ComRegisterFunctionAttributeとかで自前でやるんだけども

247 :231:2006/12/24(日) 00:58:36
>>246
ありがとうございます
もう訳が分からなくなりました
"本体"が何をさしているのか
ComRegisterFunctionAttributeとか
統合環境任せにはできないのですかね。。
勉強して出直してきます・゚・(ノД`)・゚・。。

248 :デフォルトの名無しさん :2006/12/24(日) 03:58:59
c#をvisualstudioを使って勉強しています。
テキストボックスはあったんですが、swingにあるようなテキストエリア
が見つからなくて、名前を教えて下さい。

249 :デフォルトの名無しさん:2006/12/24(日) 04:57:32
>>248
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.textbox.multiline(VS.80).aspx

250 :デフォルトの名無しさん :2006/12/24(日) 08:54:42
>>249さん、ありがとうございます。
助かりました。

251 :デフォルトの名無しさん:2006/12/24(日) 18:35:41
Dictionaryで文字列探す場合は定数でないとヒットしないですか?

252 :デフォルトの名無しさん:2006/12/24(日) 18:41:42
>>251
質問文の意図がわかりかねる

253 :デフォルトの名無しさん:2006/12/24(日) 18:43:00
正規表現などは使えないよ。

254 :デフォルトの名無しさん:2006/12/25(月) 00:14:49
質問です。

インテリセンス上に「使用しないでください」て表示された場合は
やっぱり使用しないほうがいいのかな?
皆さんはどうしてます?


255 :デフォルトの名無しさん:2006/12/25(月) 00:22:56
こういうやつがプロジェクト内にいると困る

256 :デフォルトの名無しさん:2006/12/25(月) 00:28:33
>>254
使用しないでください

257 :デフォルトの名無しさん:2006/12/25(月) 00:33:54
>>254
おまえはフランス人か。

258 :デフォルトの名無しさん :2006/12/25(月) 01:15:03
Main関数内でフォームを作ったあと、
そのフォーム内のhogeという名前のコントロール
(C#だとハンドルとは言わないんですかね?)を取得したいのですが
どうしたらよいですか?
WinAPIでいうところのGetDlgItem()みたいなやつです。
お願いします。

Form1 form = new Form1();
form.Show();

//CHooクラスのコンストラクタにControlを渡したい
CHoo hoo = new CHoo(名前"hoge"のコントロール);

259 :デフォルトの名無しさん:2006/12/25(月) 01:23:08
Handleプロパティ

260 :デフォルトの名無しさん :2006/12/25(月) 01:39:48
>>259
すいません、
メインのフォーム内に配置された
hogeという名前のコントロールのハンドルを取得したいわけですが、
つまりはどう書いたらよいのでしょうか?

261 :デフォルトの名無しさん:2006/12/25(月) 01:56:44
CHoo のインスタンスが存在すべきなのはきっとそこじゃないんだよ。

262 :デフォルトの名無しさん :2006/12/25(月) 01:57:58
ちなみに、ググったところ
「form.controlsでフォーム内のコントロールを全部取得し
名前を一つずつ比較して一致したらそのコントロールを返す」
みたいな関数を作る方法を見つけたのですが、
わざわざそんな事をしないといけないのでしょうか?
GetDlgItemみたいにシンプルに一発で名前で取得するようなことは
できないのでしょうか?

263 :デフォルトの名無しさん :2006/12/25(月) 02:00:31
>>261
Main内でインスタンスを使いたいんです。

264 :デフォルトの名無しさん:2006/12/25(月) 02:41:19
Form継承してプロパティ作るなり
フィールドにhogeのインスタンス持つなり
なんなり好きにすれ

265 :デフォルトの名無しさん:2006/12/25(月) 06:02:12
DLLファイルからある関数を使う場合、その関数の引数がポインター渡しの場合
C#だと使えないんでしょうか?


using System.Runtime.InteropServices;

namespace なんだか
{
class なんたらClass
{
[DllImport("AAA.dll")]
public static extern bool bbb(int *val);←こんな宣言はできない

266 :デフォルトの名無しさん:2006/12/25(月) 06:19:42
refとかout

267 :デフォルトの名無しさん:2006/12/25(月) 06:38:10
>>266
ありゃ、それで勝手にポインターの変換やってくれるんでつか、へぇ〜

268 :デフォルトの名無しさん:2006/12/25(月) 06:41:43
>>258
> CHoo hoo = new CHoo(名前"hoge"のコントロール);

C#では、GetDlgItemみたいなことすら、する必要が無い。
名前がhogeなら、そのまま hoge でアクセス出来る。
例えば、
Form1 form = new Form1();
form.Show();
hoo.Text = "はげ"

269 :デフォルトの名無しさん:2006/12/25(月) 08:28:16
そのコードじゃ分からんだろ

270 :デフォルトの名無しさん:2006/12/25(月) 08:53:57
つーかC++でもそんなことする必要ないけど?


271 :デフォルトの名無しさん:2006/12/25(月) 10:24:40
>>265
IntPtr型で受けるのもアリ

272 :デフォルトの名無しさん:2006/12/25(月) 13:58:40
最近C#をはじめました、、、入門本読んでちょっと面白いなと思ったところで
クラスって概念のところがわかりにくく頓挫してます

入門本の説明がイマイチなのか、作例にするプログラムに
そんな大層なものが必要ないからわかりにくいのか、概念が掴みにくい

変数を用意して、それを処理するための関数を書いてひとまとめにしたもの?
と捉えてるんですが、それならその処理を直接書けばいいわけで、
何で面倒なクラスの宣言が必要なのかがよくわかりません

C#に準拠した形でこの辺を平易に解説してる書籍とかないでしょうか?

273 :デフォルトの名無しさん :2006/12/25(月) 14:01:01
>>268
Form1 form = new Form1();
form.Show();
CHoo hoo = new CHoo(hoge);

と書いたら
エラー CS0103: 名前 'hoge' は現在のコンテキスト内に存在しません。

と怒られました。

274 :デフォルトの名無しさん:2006/12/25(月) 14:13:41
釣られませんよw

275 :デフォルトの名無しさん :2006/12/25(月) 14:14:45
ウィザードが勝手に書いてくれた
Form1.Designer.cs内のhogeのアクセス制御を
publicにしてみたら、
CHoo hoo = new CHoo(form.hoge);
でアクセスできるようになりました。
でもなんかpublicにするのは気持ち悪いです。

要するに、「GetDlgItemみたいなお手軽な命令はC#にはない」
ってことでいいですか?

276 :デフォルトの名無しさん:2006/12/25(月) 14:21:51
GetDlgItemのどこがお手軽なのかと小一時間問い詰めたい

277 :デフォルトの名無しさん:2006/12/25(月) 14:22:18
外部からhogeに直接アクセスするんじゃなくて、
CHooを返すようなプロパティなりメソッドなりを定義すべきなんじゃないの?

278 :デフォルトの名無しさん:2006/12/25(月) 14:22:58
>>275
リードオンリーなプロパティにしとけ。

279 :258:2006/12/25(月) 14:51:08
getのアクセサ書いたらprivateにしたまま取得できました。
でも取りたいコントロールに全部書くのって面倒ですね。

なんでform.controlsとかいってコントロールの配列は取れるくせに
名前指定して一つ取り出してくれるようなことができないんですかね。
めんどくさいですね。

いまのところ、form.controlsで取り出したコントロール配列から名前で検索して
返してくれる関数を書くのが気持ち的には一番すっきりしてていい感じですが。

280 :デフォルトの名無しさん:2006/12/25(月) 14:55:58
Control.Nameなんてデザイナが変数名に使う以上の意味は無いから。

281 :デフォルトの名無しさん:2006/12/25(月) 14:58:05
コントロールの名前ってVBじゃあるまいし

282 :258:2006/12/25(月) 15:02:28
別に名前が欲しいわけじゃないです。
名前からコントロールを拾いたいんです。
なんかよく分からない的外れな回答ばかり帰ってきてるきがするのですが、
質問の意味、伝わってますか?

283 :デフォルトの名無しさん:2006/12/25(月) 15:05:23
だから、名前なんて使わないんだって。

284 :デフォルトの名無しさん:2006/12/25(月) 15:05:27
>>282
んだから、外部からコントロールを直接さわってフォームの外に機能を実装するんじゃなくて、
そのフォーム内に機能を実装して機能毎に外に見せろって言ってんだよハゲ。

285 :デフォルトの名無しさん:2006/12/25(月) 15:07:50
2.0ならControls["hoge"]で取れる。
ただし名前が間違っているときにコンパイルエラーにならないのでお勧め出来ない。

286 :258:2006/12/25(月) 15:16:41
>>283
あの、では何を使うのでしょう??
今回の目的は具体的にいうと、
DirectXを使用するためその初期化の際に
フォームに配置されたピクチャーボックスのハンドルを渡したいんです。
なので、とにかく名前を使わずともそれを渡すことが可能であればいいんですが、
ではどうすれば渡せるのでしょうか?
これまではC++をちょっとかじってたのですが、
C++だと「親のハンドル」と「目的のコントロールのID」が分かってれば
GetDlgItemとかで一発でハンドルを取得して渡せたのですが。

>>284
はい、ですから今回はフォームの中にgetのアクセサを書いたらとりあえず
取得できましたし(これが最も正攻法だとは思いますが)、
更にフォームの外部から
Form.controlsで一覧を取得して.Nameプロパティを検索し一致したら返してくれる関数
を書いて取得することもできました。

でもGetDlgItemみたいな命令が用意されてれば一番簡単でいいじゃないですか。

287 :デフォルトの名無しさん:2006/12/25(月) 15:18:47
外から取りに行くのは美しくないって言われてるんだよ。

まともなプログラマはマジックストリングなんて使いたくないし。

288 :デフォルトの名無しさん:2006/12/25(月) 15:21:05
>>286
フォームの外から触って欲しいコントロールはプロパティとして公開する。
そうじゃないコントロールはできるだけ外からアクセスできないようにする。

バグの少ないプログラムの基本。

289 :デフォルトの名無しさん:2006/12/25(月) 15:28:52
今日の結論:
GetDlgItem 最強。

290 :258:2006/12/25(月) 15:30:45
>>289
そう思いました。

291 :デフォルトの名無しさん:2006/12/25(月) 15:32:47
わかんないなあ。

そんなバラバラにコードを書くなんて気持ち悪くてやってられないと思うんだが。
ピクチャーボックスを含むフォームに初期化関数を定義すりゃいいじゃない。

292 :デフォルトの名無しさん:2006/12/25(月) 15:32:54
もうひとつの結論:
>>258にはCが最適。

293 :258:2006/12/25(月) 15:33:27
>>292
そう思いました。

294 :デフォルトの名無しさん:2006/12/25(月) 15:35:53
追加:
>>258はソースを誰にも見せないプログラムを常にひとりだけで書くべし。

295 :デフォルトの名無しさん:2006/12/25(月) 15:37:47
だったら
public static class Global
{
public static Dictionary<object> AllObjects{get;}
}
みたいにして全部ぶち込んどけ

296 :258:2006/12/25(月) 15:48:25
>>291
Main関数内で
DirectX関係のクラスのインスタンスを生成して
そこでずっと使う必要があるのです。

フォームのコードの中でDXのインスタンスを生成してもいいのですが、
そうすると今度はそっちをやり取りしないといけなくなるので
どっちもどっちな気がします。

だからGetDlgItemが最強だと思います。

297 :258:2006/12/25(月) 15:50:46
でもやっぱりアクセサを書いて
必要なものだけ触れるようにするのが衛生上は良さそうですね。
ありがとうございました。

298 :258:2006/12/25(月) 16:01:25
>>285
すいません、見落としました。
これはいいですね。こういう感じのものを求めていたのですが、
コンパイルは通るものの実行したら落ちました。
バージョンは2.0を使ってるようですが、
どこが悪いかちょっと調べます。

299 :デフォルトの名無しさん:2006/12/25(月) 16:03:31
オマエは冥王星へでも行け

300 :デフォルトの名無しさん:2006/12/25(月) 16:05:32
ずいぶん昔のクラスなんて無かった時代の話だが、Cでコボラと組んだことがあってさ、全部main関数に書きやがんの。
俺は失禁しそうなくらい驚いたんだが、そいつは便座に座って排便しているような落ち着いた顔で、これが普通だと言い張るわけよ。
それで俺が書き直して見せてやるわけだが、関数なんてどこから呼ばれてるかわかりゃしない、とか尤もらしい抗弁をするのね。

結局、まあ、俺は説得に成功することはなかったんだが、一瞬それを思い出した。

301 :デフォルトの名無しさん:2006/12/25(月) 16:08:45
>>296
名前を使えば、フォーム内の都合で名前が変わったらフォームの外まで影響が出るだろ。
だから、例えば(超例えばね) GetTargetControl() とかいう関数を定義して、
DirectXで使うコントロールを返すようにすればいいのだ。
それなら外に影響を与えずにフォーム内を好きに変更できるし、
後から誰かがソースを読んでも意味を把握しやすい。

ていうことを>>284で書いたんだよハゲ。

302 :デフォルトの名無しさん:2006/12/25(月) 16:25:05
化石のような人と言われるわけだ
CからC++に移行していくときに、新しいやり方に行く人と前からのままの人に分かれたな

303 :デフォルトの名無しさん:2006/12/25(月) 16:28:22
>>296
それならstaticにしろ
それも良くないけど名前で探すよりはまだマシ

304 :258:2006/12/25(月) 16:28:39
>>301
そうですね。一人で作ってるもんで、
どこまでやるかの問題だとは思いますけど勉強になりました。

ところでControls["hoge"]としたら落ちましたが、
Controls[1]みたいにindexで指定したら落ちませんでした。
名前で指定した場合にデバッグをしてみたら
コントロールが帰ってきてないみたいなんですが、
どう見ても名前は間違えてませんし
indexで指定した場合は動くのですから他の部分の間違いでもないと思います。

コード入力時にちゃんとindexで指定する場合と
string keyで指定する場合の説明みたいなのもでてきてるので、
バージョン的にはサポートされてるみたいですが
何か考えられる原因はありますでしょうか?

305 :デフォルトの名無しさん:2006/12/25(月) 16:30:58
UNICODEとか

306 :デフォルトの名無しさん:2006/12/25(月) 16:37:52
>>304
Controls[string]はコントロールのNameプロパティが一致するものを返す。
無いときはnullを返す。

307 :258:2006/12/25(月) 16:38:23
>>305
ありがとうございます。
さっきまでControls[〜]みたいに指定できるのを知らなかったもので、
form.Controlsで収集したコレクションから.Nameプロパティを
一つずつ比較・検索して返す関数を作りまして、
それを使った場合はきちんと動くんです。
なので文字コードの問題ではないような気がしています。

308 :258:2006/12/25(月) 16:40:45
>>306
nullが帰ってきてるっぽいのですが、
今書きましたとおり、自前の関数の方ではNameプロパティを使って
検索をかけて帰ってきてますので、
名前の打ち間違いとか
文字コードの問題とか
そんな名前のコントロールが存在しないとか
そういう問題ではないと思うんですけど、どうなのでしょうか。

309 :デフォルトの名無しさん:2006/12/25(月) 16:43:14
思想の問題だな

310 :デフォルトの名無しさん:2006/12/25(月) 16:51:49
>>308
CLRのバグじゃなければそんな名前のコントロールは存在してない。

311 :デフォルトの名無しさん:2006/12/25(月) 16:52:26
>>308
仕事のついでに試してみたけどうちでもControls[string]は動かないよ。
そんな事したことないから知らんかったけど、
派生クラスによっては使えるのもあるって事じゃないの?

312 :デフォルトの名無しさん:2006/12/25(月) 17:00:00
どうせコントロール初期化するまえにやってんじゃないの?

313 :デフォルトの名無しさん:2006/12/25(月) 17:03:30
>>311
フォームで試してみたがちゃんと取得できたぞ?

Control+ControlCollectionは親コントロールには依存してないから、他でも問題ないと思うけど。

314 :デフォルトの名無しさん:2006/12/25(月) 17:04:23
ハゲを擁護するつもりはないけど、直前に触ってるコントロールを対象に
Controls[string]とControls.IndexOfKey()を試してますよ。
名前はデザイナからコピペしてる。

315 :デフォルトの名無しさん:2006/12/25(月) 17:06:27
>>313
そうなのか。オレオワタw

316 :デフォルトの名無しさん:2006/12/25(月) 17:09:05
インデックスでとれるなら、そいつのTextと比較してみそ

317 :デフォルトの名無しさん:2006/12/25(月) 17:10:17
Controls.Findとかもあるべや

自分も、継承ですますので、使ったこと無い。

318 :デフォルトの名無しさん:2006/12/25(月) 17:11:40
一応報告。
動かなかったのはUserControlでやってたからで、Formでは動いた。
Controlのそれと、Formのそれは違う型なのね。勉強になった。

319 :デフォルトの名無しさん:2006/12/25(月) 17:16:22
>>318
UserControlのControlsもControl+ControlCollectionじゃないか?
ちゃんと初期化で、this.Controls.Add(control)ってやってるかい?

320 :デフォルトの名無しさん:2006/12/25(月) 17:18:09
>>319
258もそれっぽいな w

321 :デフォルトの名無しさん:2006/12/25(月) 17:20:04
流石にAddしてなかったら表示されないから分かるだろw

322 :デフォルトの名無しさん:2006/12/25(月) 17:22:25
>>319
どっちもデザイナで貼り付けたやつだよ。

ControlsのはSystem.Windows.Forms.Control.ControlCollection、
FormのはSystem.Windows.Forms.Form.ControlCollectionで、AddとRemoveがオーバーライドされてる。


323 :デフォルトの名無しさん:2006/12/25(月) 17:22:25
いや、ワークでやってたとか

なんか、いまいちつづつまが合わないような

324 :デフォルトの名無しさん:2006/12/25(月) 17:28:09
>>13
おもっきし、遅レスだけど

該当の件、C#相談室に持ち込んでみた。
回答になるかどうか分からないけど、見てみるといいとおもう。

325 :デフォルトの名無しさん:2006/12/25(月) 17:28:12
>>322
おお、ほんとだ。

しかし、Reflectorで見た感じじゃ特殊なコントロールを除いて親のAdd/Removeを呼んでるだけで、
それだけでItems[String]が使えなくなるってのはおかしい気もするんだがなー

326 :デフォルトの名無しさん:2006/12/25(月) 17:31:23
インデックスだと取れた、というのは?
全然別のもん、、つーかUserControlあたりもってきたのか

327 :デフォルトの名無しさん:2006/12/25(月) 17:37:33
UserControlにデザイナでListView貼り付けてみたけどちゃんと取得できたよ。

MessageBox.Show(this.userControl1.Controls["listView1"].ToString());

328 :デフォルトの名無しさん:2006/12/25(月) 17:42:02
Nameプロパティに値が設定されてないんじゃないの

329 :258:2006/12/25(月) 17:46:02
目的のコントロールはPictureBoxなんですが、
なぜかこれだけうまくいかないような感じです。
他ならツールバーなんかでも適当に名前をつけて取得できているようです。

どれもフォームのデザイナーで配置し、名前をつけてます。

330 :デフォルトの名無しさん:2006/12/25(月) 17:49:02
>>329
とりあえず、Controls[pictureBox.Name] とでもしてみろよ。

331 :デフォルトの名無しさん:2006/12/25(月) 17:49:32
>>318だけど
自分のUserControlは実行時にAddしたりRemoveして切り替えてるやつでついでにやってたんで、
なんか状況が違うのかもしれん。とりあえず自分は困ってないし時間もないんで今回はもうパスw

332 :デフォルトの名無しさん:2006/12/25(月) 17:49:40
もうソース晒せ

333 :デフォルトの名無しさん:2006/12/25(月) 17:50:49
コンテナの中に配置してるってオチじゃね?

334 :デフォルトの名無しさん:2006/12/25(月) 17:51:52
>>333
それだ!!

335 :デフォルトの名無しさん:2006/12/25(月) 17:53:46
>>318だけど
超それだったwお騒がせしますた。

336 :258:2006/12/25(月) 17:55:14
>>333
Panelの上に置いてますけど、もしかしてそういうことですか?
だとすると、そういう場合はどうやって書いたらいいでしょうか?

337 :デフォルトの名無しさん:2006/12/25(月) 17:58:25
form.Controls["panel1"].Controls["pictureBox1"]k

338 :デフォルトの名無しさん:2006/12/25(月) 17:58:34
>>336
パネルのControlsから探すんじゃね?
どんどん余計なものに依存するコードになるね。

339 :258:2006/12/25(月) 18:04:15
>>337>>338
わかりました。ありがとうございました。
ちなみにさっきインデックスだと取れたと言ったのは
適当に5とか入れたらツールバーとかにDirectXの画面が表示されたんで、
まぁとりあえずはControls[index]の形でなら取れるんだな、と思ったからです。
お騒がせしました。

340 :デフォルトの名無しさん:2006/12/25(月) 18:08:10
結論は、GetDlgItem()最強

341 :デフォルトの名無しさん:2006/12/25(月) 18:09:21
つーか、GetDlgItemも親のhWndいるしな・・・

342 :デフォルトの名無しさん:2006/12/25(月) 18:12:30
>>258-342
ああ、なんと不毛な議論なんだ

343 :318:2006/12/25(月) 18:14:32
スマソ。半分は漏れのせいm(_ _)m

344 :258:2006/12/25(月) 18:19:08
>>342
すっきり納得できるあなたの分かりやすい回答が欲しかったです。

345 :342:2006/12/25(月) 18:20:26
>>344
>>333を書いたのは俺だが、これですっきり納得できなかったらプログラマ辞めてください

346 :デフォルトの名無しさん:2006/12/25(月) 18:24:57
>>344
ControlsからControl引っ張ってくるのはあくまで邪道
つまりあなたは邪道プログラマ


347 :258:2006/12/25(月) 18:27:18
結論は、GetDlgItem()最強ということです。

348 :デフォルトの名無しさん:2006/12/25(月) 18:28:10
マジレスするが、GetDlgItemでもコンテナの中に入ってたら取得できんだろ…

349 :デフォルトの名無しさん:2006/12/25(月) 18:32:33
[DllImport("user32.dll", EntryPoint="GetDlgItem", SetLastError=true)]
public static extern IntPtr GetDlgItem(IntPtr hDlg, Int32 nIDDlgItem);

ご自由におとりください。

350 :デフォルトの名無しさん:2006/12/25(月) 18:36:07
なんでMSはControls[string]なんて付けたんだろ
258みたいなのを救済するため?
リフレクションのため?

351 :デフォルトの名無しさん:2006/12/25(月) 18:37:08
動的な処理のためでは

352 :デフォルトの名無しさん:2006/12/25(月) 18:41:43
人に見せるなら到底できないが、使い捨てプログラムなら textBoxN とかできると便利かもしれん。

353 :デフォルトの名無しさん:2006/12/25(月) 18:59:06
>>350
お手軽プログラミングにはシンボリックリファレンスみたいなのは必須でしょ
VB移行組とかから要望があったんじゃないかな。

354 :デフォルトの名無しさん:2006/12/25(月) 19:02:13
お前らいい加減にネタに気づけよ。

>>258
おもしろかったか?

355 :258:2006/12/25(月) 19:05:35
いずれにせよGetDlgItem最強という結論に変わりはありません

356 :354:2006/12/25(月) 19:08:05
>>355
GetDlgItemがどのように実装されているかなんて考えたっこと無いのか?
化石か、ゆとり世代どっちだ?


357 :デフォルトの名無しさん:2006/12/25(月) 19:09:10
ネタにマジレスカッコイイ

358 :258:2006/12/25(月) 19:11:11
別にプログラムなんかに一生懸命になりたくないので
簡単にできる方法があればそれでいいです。
みんなが御宅さんのようにヲタクだとは思わないで下さい。

359 :354:2006/12/25(月) 19:12:56
うひょー俺かっこいい
かっこいいいいいいいいい

360 :デフォルトの名無しさん:2006/12/25(月) 19:13:51
秋田

361 :デフォルトの名無しさん:2006/12/25(月) 19:18:08
そういえばMFC最強論者がいなくなったな
彼も秋田のか

362 :デフォルトの名無しさん:2006/12/25(月) 19:18:59
プログラムなんかに一生懸命になりたくないので、
C++でDirectX使うのだ。

363 :デフォルトの名無しさん:2006/12/25(月) 19:19:41
((((;゜Д゜)))

364 :デフォルトの名無しさん:2006/12/25(月) 19:20:11
なにこの流れ

365 :デフォルトの名無しさん:2006/12/25(月) 19:21:00
歳末大討論会です

366 :258:2006/12/25(月) 19:21:21
C#の方が簡単で便利だろうと思い、
手を出してみたらこのような有様でした。
でも、外からやたらに触れないようにした方が正しいとは思います。

367 :258:2006/12/25(月) 19:22:38
>自分も、継承ですますので、使ったこと無い。

ところで、継承ですますとはどういうことでしょうか。
例えばどうやって書きますか?
今後の参考のために教えてください。

368 :デフォルトの名無しさん:2006/12/25(月) 19:26:50
C#でも同じような機能はあったけど
見付けられなくて、教えてもらっても使いこなせませんでした。
所詮はC#ですね。
おたくじゃないので、C++は簡単ですがC#なんておたく言語は
使えません。


369 :デフォルトの名無しさん:2006/12/25(月) 19:27:19
>>368
名前欄埋め忘れてるぞw

370 :デフォルトの名無しさん:2006/12/25(月) 19:28:58
しまった。

371 :デフォルトの名無しさん:2006/12/25(月) 19:31:15
既存の知識を使うのはできるけど
新しい事を覚えるのは難しい年頃らしい

372 :デフォルトの名無しさん:2006/12/25(月) 19:33:03
DBの接続文字列はどうやって決めるんですか?
現状はIDEで作ったものをコピペしています。

373 :デフォルトの名無しさん:2006/12/25(月) 19:37:28


374 :デフォルトの名無しさん:2006/12/25(月) 19:46:20
sqlserverだったら、

http://www.microsoft.com/japan/msdn/sqlserver/columns/ADONET/adonet2.aspx#2

375 :258:2006/12/25(月) 19:51:07
>>371
目的のレベルと学習コストを秤にかけるのは当然だと思います。
使い捨てのプログラムを組むだけなので簡単に済めばそれでいいのです。

そんなことは置いておいて、ご存知でしたら質問の件を教えてください。

376 :デフォルトの名無しさん:2006/12/25(月) 19:52:25
だからもう秋田って

377 :デフォルトの名無しさん:2006/12/25(月) 19:54:05
あの内容でハンドルって言ってる段階で…

378 :258:2006/12/25(月) 19:58:06
>>377
昨日始めたばかりでまだ良く分かってないことがおおいですが
間違いがあれば改めたいので具体的に指摘していただけませんか?

ちなみにハンドルはハンドルとしてメンバに持ってるんですね。
なのでコントロールのインスタンスって言ったら良かったんですかね?
どういったらよかったですか?

379 :デフォルトの名無しさん:2006/12/25(月) 19:58:55
>>377
なんか低級な方法でDirectXさわってるんじゃね?

380 :258:2006/12/25(月) 20:00:56
>>379
低級か高級か分かりませんけど、
ManagedDirectXで最初にデバイス作るときに
描画したいコントロールのハンドルを渡す必要があっただけです。
何かまずいでしょうか?

381 :デフォルトの名無しさん:2006/12/25(月) 20:02:54
いいかげん、スルーしろ

382 :デフォルトの名無しさん:2006/12/25(月) 20:03:09
おのおのがたスルーでござる。

383 :258:2006/12/25(月) 20:03:20
一言ずつぼそぼそ言う陰湿な人は迷惑ですね。
何の参考にもなりませんし関係ない人にとっても邪魔なだけだと思います。
言いたいことがあったらはっきり言えばいいのに、自信がないんですか?
教える気がなくていちいち嫌味ったらしく書くなら
最初から書かないでくれた方がいいです。

384 :デフォルトの名無しさん:2006/12/25(月) 20:17:07
なんだよネタだったのかよ真面目に試したりして損した・・・

       \|\_\  ∠ /|/
          |○|  |○|
  _| ̄|○   _     _   ○| ̄|_
        / /|)  (|\ \
        | ̄|        | ̄|
      / /        \ \



385 :デフォルトの名無しさん:2006/12/25(月) 20:20:08
古いのでためにならないかもしれませんが、
http://www.microsoft.com/japan/msdn/directx/japan/dx9/default.aspx

386 :デフォルトの名無しさん:2006/12/25(月) 21:20:06
GCされちゃえばいいのに…

387 :デフォルトの名無しさん:2006/12/25(月) 21:56:19
GCですら触りたくないだろうに……
かわいそうなGC
ゴミばかり相手にして

388 :デフォルトの名無しさん:2006/12/25(月) 22:06:35
ここは質問スレだよな?
役に立たないゴミはお前だよ。
質問に答えろよ。

389 :デフォルトの名無しさん:2006/12/25(月) 22:10:24
GCされちゃえばいいのに…

390 :デフォルトの名無しさん:2006/12/25(月) 22:20:14
ここは質問スレだよな?
役に立たないゴミはお前だよ。
質問に答えろよ。

391 :デフォルトの名無しさん:2006/12/25(月) 22:21:49
googleのトップページに何故カンガルーが描かれているのでしょうか。
とすれ違い。

392 :デフォルトの名無しさん:2006/12/25(月) 22:29:26
>>391
クリトリスだからだよ!

393 :デフォルトの名無しさん:2006/12/25(月) 22:30:50
ここは質問スレではありません。
初心者の質問に対し自称上級者が偉そうに小言交じりの中途半端なレスを返し
どういうことか突っ込まれると詳しく知らないがゆえに口ごもって
逆切れしながら逃げまわるスレです。

394 :デフォルトの名無しさん:2006/12/25(月) 22:30:59
あらあら粘着されちゃってるよw
お前等これ読んでみろ・・・

   ス   ル   ー

395 :デフォルトの名無しさん:2006/12/25(月) 22:32:58
普通に質問してるだけじゃん。
何か間違った事を言ったか?

396 :デフォルトの名無しさん:2006/12/25(月) 22:44:42
雑談はスルー
仕切りなおし。

質問受け付けます

397 :デフォルトの名無しさん:2006/12/25(月) 22:44:53
秋田

398 :デフォルトの名無しさん:2006/12/25(月) 22:54:07
>>379
低級か高級か分かりませんけど、
ManagedDirectXで最初にデバイス作るときに
描画したいコントロールのハンドルを渡す必要があっただけです。
何かまずいでしょうか?


399 :デフォルトの名無しさん:2006/12/25(月) 22:54:23
なんか面白いな C++から入ってC#をC++風に固執して使いたい香具師とか
C++もC#もそれぞれ利点・欠点があるから、どんなアプリを組むかで
ターゲットを変えりゃいいのに、無理矢理へんなプログラム組むものではないと思う

400 :デフォルトの名無しさん:2006/12/25(月) 22:58:41
別に無理やりでもなんでもないと思うが。

401 :デフォルトの名無しさん:2006/12/25(月) 22:59:18
>>377
昨日始めたばかりでまだ良く分かってないことがおおいですが
間違いがあれば改めたいので具体的に指摘していただけませんか?

ちなみにハンドルはハンドルとしてメンバに持ってるんですね。
なのでコントロールのインスタンスって言ったら良かったんですかね?
どういったらよかったですか?


402 :デフォルトの名無しさん:2006/12/25(月) 23:00:00
>>317
>自分も、継承ですますので、使ったこと無い。

ところで、継承ですますとはどういうことでしょうか。
例えばどうやって書きますか?
今後の参考のために教えてください。


403 :デフォルトの名無しさん:2006/12/25(月) 23:01:24
以上、積み残しの初心者の普通の質問。
雑談はスルー。回答お願いします。

404 :デフォルトの名無しさん:2006/12/25(月) 23:05:04
S2.NET使った人居る?
感想をおながいします

405 :デフォルトの名無しさん:2006/12/25(月) 23:07:18
ここは質問スレではありません。
初心者の質問に対し自称上級者が偉そうに小言交じりの中途半端なレスを返し
どういうことか突っ込まれると詳しく知らないがゆえに口ごもって
逆切れしながら逃げまわるスレです。


406 :385:2006/12/25(月) 23:14:26
役に立ちませんでしたか。

directX C#でググって探したら結構情報が集まりますよ。

407 :258:2006/12/25(月) 23:18:06
---------------------------------------------------
なりすまし終了

408 :デフォルトの名無しさん:2006/12/26(火) 00:09:19
??

409 :デフォルトの名無しさん:2006/12/26(火) 09:22:32
プログラムをデーモン化したいのですが。
ウィンドウを持たずバックグラウンドで動き続けるプログラムを作るには、
どうしたらいいですか?

410 :デフォルトの名無しさん:2006/12/26(火) 09:23:35
ウィンドウ作らなければいい。

411 :デフォルトの名無しさん:2006/12/26(火) 09:31:34
Consoleアプリケーションにすればいいんじゃない?

412 :デフォルトの名無しさん:2006/12/26(火) 10:00:56
サービス作る

413 :デフォルトの名無しさん:2006/12/26(火) 14:11:26
byte [] aaa = new byte[2];
ushort bbb;

をCで言うunionみたいな使い方したいんですけど
どやってやるのでしょう?


414 :デフォルトの名無しさん:2006/12/26(火) 14:12:11
>>410
詳しくお願いします。
>>411
コンソールでもウィンドウは出ますよね?


415 :デフォルトの名無しさん:2006/12/26(火) 14:15:29
>>413
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Explicit)]
public unsafe struct UNION
{
 [FieldOffset(0)] public fixed byte aaa[2];
 [FieldOffset(0)] public ushort bbb;
}


416 :デフォルトの名無しさん:2006/12/26(火) 14:18:05
C#的にはobject型を使っとけ

417 :デフォルトの名無しさん:2006/12/26(火) 14:30:36
>>415
ありがとうございます

418 :デフォルトの名無しさん:2006/12/26(火) 14:30:37
>>416
それは Variant の代用にはなるけど、Union の代用にはならないよ。

419 :デフォルトの名無しさん:2006/12/26(火) 14:32:39
メニューから別のフォームを呼び出すようにしたいんだが。

420 :デフォルトの名無しさん:2006/12/26(火) 14:35:37

           i::::::::/'" ̄ ̄ヾi
           |:::::::| ,,,,,_  ,,,,,,|
           |r-==( 。);( 。)
           ( ヽ  :::__)..:: }
        ,____/ヽ  ー== ;  ほほう それでそれで?
     r'"ヽ   t、   \___ !
    / 、、i    ヽ__,,/
    / ヽノ  j ,   j |ヽ
    |⌒`'、__ / /   /r  |
    {     ̄''ー-、,,_,ヘ^ |
    ゝ-,,,_____)--、j
    /  \__       /
    |      "'ー‐‐---''


421 :デフォルトの名無しさん:2006/12/26(火) 14:42:54
抽象的すぎたかな。。。
たとえば[ツール]→[フォルダオプション]で
新しいウィンドウが出てくるけど、そんな感じで。

422 :デフォルトの名無しさん:2006/12/26(火) 14:44:43
private void toolStripMenuItem1_Click(object sender, EventArgs e){
  Form2 form2 = new Form2();
  form2.ShowDialog();
}

423 :デフォルトの名無しさん:2006/12/26(火) 14:48:12
>>414
コンソールウィンドウはCSRSSが勝手に作ってるだけ。

424 :デフォルトの名無しさん:2006/12/26(火) 14:52:42
デザイナーでデザインした後、
プログラム側で

textbox1.Font = new Font("MSゴシック",15);

なんて、する場合

textbox1.Font.Dispose(); //<---  これ、必須??
textbox1.Font = new Font("MSゴシック",15);

リソースの開放漏れ、起こしそうな気もするし、
気にしすぎのような気もするし。。。



425 :デフォルトの名無しさん:2006/12/26(火) 14:57:21
デザイナでデフォルトのままにしといたら親のFontと同じオブジェクト指してるぞ。

426 :デフォルトの名無しさん:2006/12/26(火) 15:00:11
>>422
Thanx!

427 :デフォルトの名無しさん:2006/12/26(火) 15:08:01
>>424
バグの素になるから、自分で作ったオブジェクト以外はDisposeしちゃいかん
同じFontオブジェクトを参照している箇所があればそこでアボン

428 :デフォルトの名無しさん:2006/12/26(火) 15:18:43
>>425
>>427

さんくす

なんか、別のフォームのインスタンス作るたんびに、フォントがらみで
例外出てたんで、これかなぁ〜、だったんですけど
ビンゴっぽいですなぁ
さっそく、Dispose()消しますです....



429 :デフォルトの名無しさん:2006/12/26(火) 15:23:37
>>415
すみません
UNION ccc;

とした場合
ccc.aaa[0] = 0x12;

fixedなんやらunsafeがなんやらってコンパイラーに怒られてしまうんですけど・・・・


430 :デフォルトの名無しさん:2006/12/26(火) 15:28:48
>>429
プロジェクトのプロパティ→ビルド→アンセーフコードの許可
意味は別途しらべておくれ。

431 :デフォルトの名無しさん:2006/12/26(火) 15:30:41
>>429
ちゃんとunsafeで囲ってるかい?

unsafe
{
    UNION ccc;
    ccc.aaa[0] = 0x12;
}

432 :デフォルトの名無しさん:2006/12/26(火) 15:31:01
>>430
それはやりました

433 :デフォルトの名無しさん:2006/12/26(火) 15:31:56
>>431
お手数かけます
ありがとうございます

434 :デフォルトの名無しさん:2006/12/26(火) 15:45:15
fixed ステートメントを使用してくださいってコンパイラーにまだ怒られる・・・

C#でunionみたいな使い方は初心者はやっちゃいけないんですね・・・

435 :デフォルトの名無しさん:2006/12/26(火) 15:54:55
そもそも何のためにunionを使うんだ?

436 :デフォルトの名無しさん:2006/12/26(火) 15:54:58
初心者がやっちゃならんことはないが、自分で何とかできないなら使うべきじゃないだろうな

437 :デフォルトの名無しさん:2006/12/26(火) 16:00:35
通信パケットとかデバイスのメモリみたいな、データのレイアウトが
あらかじめ決まってる物を表現する以外は、だいたい間違った使い方だよ<union

438 :デフォルトの名無しさん:2006/12/26(火) 16:20:07
あるところからデータをもらうのにフォーマットがbyte単位でしかもらえないので
unionを使いたかったのですが、C#だとやたら怒られてかなり異例な処理みたいなので
変換したほうがいいんでしょうね


byte[] aaa = new byte[2];
ushort bbb;

private void byte_word()
{
bbb = (ushort )aaa[0];
bbb <<= 8;
bbb |= (ushort )aaa[1];
}
private void wrod_byte()
{
aaa[0] = (byte)(bbb >> 8);
aaa[1] = (byte)bbb;
}


439 :デフォルトの名無しさん:2006/12/26(火) 16:24:54
怒られるとこ全部 unsafe {} でくくってみ
固定長の配列とか、ポインタとかは unsafe ブロック内でしか使えないよ

440 :デフォルトの名無しさん:2006/12/26(火) 16:26:48
>>438
それをstructのプロパティにしてしまえば?

441 :デフォルトの名無しさん:2006/12/26(火) 16:28:35
>>438
アンマネージな世界から貰うんならMarshalを使う手もある。

442 :デフォルトの名無しさん:2006/12/26(火) 16:29:17
>>439
見捨てず面倒みてくれてありがとうございます。

ccc.aaa[0] = 0x12; をやったとき
unsafe{....}で囲んでいますので

unsafeでなくてfixedで怒られているみたいだんですよ


443 :デフォルトの名無しさん:2006/12/26(火) 16:34:26
何をやったらなんて怒られたのかわからんと何もわからん

444 :デフォルトの名無しさん:2006/12/26(火) 16:36:03
cccの宣言をunsafeモードにしてないとかいうオチか?

445 :デフォルトの名無しさん:2006/12/26(火) 16:48:50
using System.Runtime.InteropServices;
全部書くとこんな感じです

namespace DeviceApplication1
{
public partial class Form1 : Form
{
[StructLayout(LayoutKind.Explicit)]
public unsafe struct UNION {
[FieldOffset(0)] public fixed byte aaa[2];
[FieldOffset(0)] public ushort bbb;
    };
unsafe UNION ccc;

private void Form1_Load(object sender, EventArgs e)
{
unsafe
{
ccc.aaa[0] = 0x12;
}
    }

446 :デフォルトの名無しさん:2006/12/26(火) 16:55:54
>>445
unsafe
{
    fixed (byte* p = ccc.aaa)
    {
        p[0] = 0x12;
    }
}

インスタンス変数はヒープに割り当てられるからfixedする必要がある。

447 :デフォルトの名無しさん:2006/12/26(火) 17:06:37
>>446
ありがとうございます ようやく全解決です。
ccc.aaa[0] = 0x12;
ccc.aaa[1] = 0x34;
を応用すると

unsafe
{
   fixed (byte* p = ccc.aaa)
{
     *(p+0) = 0x12;
     *(p+1) = 0x34;
}
}
となりますね

付き合ってくれた皆さん本当にありがとうございます。
勉強になりました。

448 :デフォルトの名無しさん:2006/12/26(火) 19:06:58
unionはどこいった?

449 :デフォルトの名無しさん:2006/12/26(火) 19:09:47
何が言いたい?

450 :デフォルトの名無しさん:2006/12/26(火) 19:16:06
BitConverter.ToUInt16じゃ駄目なんかね

451 :デフォルトの名無しさん:2006/12/26(火) 19:22:04
そういやそんなのあったね。すっかり失念してた。
悪いことしたもんだ

452 :とら男:2006/12/26(火) 23:32:20
すみませんが、C#上級者の技を教えて下さい。
上司をギャフンと言わせてやりたいです。

(多分、このスレだと相当な上級者がいらっしゃいそうなので)



453 :デフォルトの名無しさん:2006/12/26(火) 23:42:09
System.Reflection.Emit名前空間を使いこなせたら何でもできる

454 :デフォルトの名無しさん:2006/12/26(火) 23:42:55
「ギャフン」なんて言葉を使えるあなたは十分上級者です

455 :デフォルトの名無しさん:2006/12/26(火) 23:49:52
unionです。
BitConverter.ToUInt16
とても便利なものがあるんですね。

今回教えていただいたunionのやり方はunsafeなのでC#としては、
必要で無い限り避けた方が良い気がしますが
unsafeとか静的領域の使い方がわかり、とても勉強になりました。
C#ってあまり使っちゃいけないと思いますが、ポインター使えるんですね、驚きでした

456 : 452:2006/12/27(水) 02:16:16
>>453
ちょっと勉強してみます。

457 :デフォルトの名無しさん:2006/12/27(水) 17:16:14
起動時にFormをHideで隠したいのですがLoadイベントでは無理でした。
起動時以外ではHide()でいけたのですが色々試してみても無理でした。

よろしければ解決法ご教授下さい。

458 :デフォルトの名無しさん:2006/12/27(水) 18:15:30
デザイナでFormのWindowStateをMinimizedにしつつ、お好みでShowInTaskBarをfalseにする。

459 :デフォルトの名無しさん:2006/12/27(水) 18:38:27
Form のインスタンスを作成したら、Visible = false にして Application.Run


だったかな?

460 :デフォルトの名無しさん:2006/12/27(水) 18:41:17
失礼。Application.Run は引数なしで実行させてくださいな。


……あと、その場合はコンストラクタの最後で
  IntPtr ptr = this.Handle;
なんてやっておくと幸せになるかもしれない。

461 :デフォルトの名無しさん:2006/12/27(水) 22:16:39
あるいは
ShownイベントでVisible = false;

462 :デフォルトの名無しさん:2006/12/28(木) 02:43:00
プロジェクトで新たに作成した hoge.resx というファイル(埋め込み)から
文字列 message01 を取得する方法を教えて下さい。

検索で引っかかった物は hoge.resource ファイルのものばっかりで、
hoge.resource ファイルが見つかりませんというエラーが出てしまい困っています。

ちなみに、SharpDevelopを使っています。

463 :462:2006/12/28(木) 04:59:27
自己解決しますた。dクス

464 :デフォルトの名無しさん:2006/12/28(木) 13:04:38
タコな質問な事は判っているのですが、ずばりな回答を見付けられなかったので
教えてください。
フォームに貼り付けたボタンの背景を透明化して、フォームが透けて見える様に
したいと思っています。
どうすれば良いでしょうか?

465 :デフォルトの名無しさん:2006/12/28(木) 13:40:53
>>464
13の質問した人だろ。

C#相談室で代わりに質問しといたので、
そっちを見るがよろし。

2つの解決法があるようだ。

466 :デフォルトの名無しさん:2006/12/28(木) 13:56:56
>>464
失礼
302-336までを参考にしてね。
http://pc8.2ch.net/test/read.cgi/tech/1165656839/

Form2枚重ねと、レイヤードウィンドウを使用する2つの案が出てた。
最終的に俺も試してないから、ここから先は自助努力で。

467 :デフォルトの名無しさん:2006/12/28(木) 13:59:13
Graphicsで自前描画でもいけるはず

468 :デフォルトの名無しさん:2006/12/28(木) 14:06:15
>>467
どうやって?

デスクトップのキャプチャ(Win32使用)はCode Projectで見つけた。
ただ、Formも重なって取得するため、その方法は出来ないモンだとおもってた。

469 :464:2006/12/28(木) 18:40:31
レスさんきゅー。でも俺は13じゃないよ。
向こうも眺めて来たけどコピペで出来そうな解じゃなさそうね。
話理解するのはちょっと時間が掛かりそうだけど読んでみる。

以下ちらしの裏。
テーマ切って開発してたらbuttonは透けてたんだけどTrackBarが透けない。
透けてるTrackBar手に入れたらテーマ上げなくちゃならなくなって、Button
が透けなくなった…orz。
で、今ココ。

470 :デフォルトの名無しさん:2006/12/28(木) 21:30:19
Form1に貼ってあるtextBoxのサイズを新しく作ったクラスから弄るにはどうしたらいいんですか?
サイズの変更をしたいんですが

型または名前空間名 ***** が見つかりませんでした。ディレクティブを使うかアセンブリ参照を使ってください。
とでます。
ディレクティブっていうのはusing ***とかいうのかな?とか思ってますが全然わかっていません。
よろしくお願いします

471 :デフォルトの名無しさん:2006/12/28(木) 21:47:47
そのクラスにも、
using System.Windows.Forms;
を追加汁ってことかな

472 :デフォルトの名無しさん:2006/12/28(木) 23:33:51
そのtextBoxのインスタンスへの参照を新しいクラスに渡しといて,
それを通してサイズを変更する

473 :デフォルトの名無しさん:2006/12/29(金) 01:34:20
ごみ箱の中のファイル/フォルダ名と削除した日時を取得し、
必要に応じて削除する方法探しています。
何かいい方法はありませんか?

474 :デフォルトの名無しさん:2006/12/29(金) 01:54:43
ない

475 :デフォルトの名無しさん:2006/12/29(金) 02:07:07
できんでもない。
各ドライブのルートにRECYCLERってフォルダがあるのがゴミ箱の実体。
RECYCLERのサブフォルダの中にINFO2ってファイルがあるから、それを見ればいつ捨てられたどんなファイルか分かる。

476 :デフォルトの名無しさん:2006/12/29(金) 02:13:00
Shell APIで出来るならそれをP/Invokeなどで呼ぶべきだろうな。
RECYCLERを直接いじるのは最後の手段。

477 :デフォルトの名無しさん:2006/12/29(金) 03:16:55
ごみ箱を弄るならシェル名前空間の知識が要るね
ShellAPI使うとめんどいのでShell32.dllをCOM参照して、

const Int32 RECYCLE_BIN = 0xA;
Folder rb = new ShellClass().NameSpace(RECYCLE_BIN);
foreach (FolderItem fi in rb.Items())
{
    Console.WriteLine(fi.Name);
    for (Int32 i = 0; i <= 10; i++)
    {
        Console.WriteLine("\t" + rb.GetDetailsOf(fi, i));
    }
    fi.InvokeVerb("delete");
}

478 :デフォルトの名無しさん:2006/12/29(金) 07:52:42
youtubeの動画をflvやmpeg、wav、mp3ファイルなどに落としたいのですが
どうすればいいでしょう?

既にそういうソフトなどがあるのは知ってるんですけど、
自作したいので、やり方が乗っているサイトなどありましたら
教えていただきたいです。お願いします。

479 :デフォルトの名無しさん:2006/12/29(金) 07:59:15
>>478
その前になぜこのスレでその質問をするのか理由を述べよ。

480 :478:2006/12/29(金) 08:13:56
>>479
C#でyoutubeの動画を落とすソフトを作りたいと思ったのですが、
検索してもソフトは出てくるけど変換するやり方が書いてないので、
聞いてみました。

えっ・・?スレ違いじゃないよね?

481 :デフォルトの名無しさん:2006/12/29(金) 08:44:33
スレ違い

つ 正規表現

482 :デフォルトの名無しさん:2006/12/29(金) 11:03:27
C#で作りたいってだけで作り方を教えろってのはスレ違い

483 :デフォルトの名無しさん:2006/12/29(金) 12:55:33
難しい質問が来ると決まって「スレ違い」




おきまりの文句だよねw

484 :デフォルトの名無しさん:2006/12/29(金) 12:56:06
難しい質問が来ると決まって質問者を煽る




おきまりだよねw



485 :デフォルトの名無しさん:2006/12/29(金) 13:55:16
次の質問どうぞ

486 :デフォルトの名無しさん:2006/12/29(金) 13:59:18
特に無いな

487 :デフォルトの名無しさん:2006/12/29(金) 14:02:53
言葉に詰まると次の人どうぞとかいって逃げる


お決まりだよねw

488 :デフォルトの名無しさん:2006/12/29(金) 14:04:18
>>484
ここは簡単な質問すら格言で終わらすからわけわからんし、
質問者もシロートレベルで質問するからわけわからん

489 :デフォルトの名無しさん:2006/12/29(金) 14:06:43
そういってる香具師らも大したレベルじゃ(ry

490 :デフォルトの名無しさん:2006/12/29(金) 14:07:30
次の質問が来るまで駄レスどうぞ

491 :デフォルトの名無しさん:2006/12/29(金) 14:08:59
>>488
ヒント:スレタイ

492 :デフォルトの名無しさん:2006/12/29(金) 14:17:50
>>480の質問は
「やり方が乗っているサイトがあったら教えろ」

答えのひとつとしては
 「ないと思うので教えられない。そもそもないことを証明するのは難しい」



493 :デフォルトの名無しさん:2006/12/29(金) 14:28:08
ようつべの仕組みなんて知らないけど
視聴URLから動画のURLに変換して、それをHTTPでダウンロードすればいいんじゃないのか

494 :デフォルトの名無しさん:2006/12/29(金) 14:42:34
質問スレなのに俺みたいに質問も回答もしないやつ多いよね。

495 :473:2006/12/29(金) 15:25:26
>>477
dクス!! 大変参考になりました

496 :デフォルトの名無しさん:2006/12/29(金) 17:06:42
誰かが公開しているようなフリーソフトに勝手にプラグインのように追加機能を足したりってできますか?
たとえば2chの専ブラとかで勝手に右クリック項目増やせたりとか。
作者さんとは連絡は取れるんですが開発自体終了して改良する予定が無いそうなんでできればやってみようかと思ってます。

C#でやろうと思っていますができるかできないか、あとヒントがあればお願いします。

497 :デフォルトの名無しさん:2006/12/29(金) 17:17:41
力技でどうにかできんことはないが、お前さんが考えてるよりはずっと難しいよ。

CLRの恩恵はほとんど受けられないから、C#使う意味はないしね。

498 :デフォルトの名無しさん:2006/12/29(金) 17:30:34
第一,元のソフトがプラグインで拡張できるように作られてないとどうしようもないよ

499 :デフォルトの名無しさん:2006/12/29(金) 17:32:19
コンテキストメニューを拡張するくらいなら強引に割り込めばなんとかなる

500 :デフォルトの名無しさん:2006/12/29(金) 17:42:17
初心者に変なことを教えるなよ

501 :デフォルトの名無しさん:2006/12/29(金) 17:54:55
C#でやることじゃないだろ

502 :デフォルトの名無しさん:2006/12/29(金) 18:27:17
文字列のサイズ(バイト数)の求め方は?
例えば、
string str = "日本語の表示"; // str に sizeof が使えない
str.Length ではバイト数ではなく、文字数6が入ってしまう

503 :デフォルトの名無しさん:2006/12/29(金) 18:31:56
>>502
str.Length * sizeof(Char)

504 :デフォルトの名無しさん:2006/12/29(金) 18:34:43
>>502
UTF-16文字列は1コードポイントあたり一律2バイト
何も考えずにLength(=コードポイント数)を二倍しとけばいい

505 :デフォルトの名無しさん:2006/12/29(金) 18:38:30
はっはっは、嘘つけ。
まSJIS範囲ならそうだが。
半角含まれてないならまあそれもありか…

506 :デフォルトの名無しさん:2006/12/29(金) 18:41:37
UTF-16では一文字は1or2コードポイントで、1コードポイントは16bits
Lengthは文字数ではなくコードポイントの数を返すから、単純に2倍すればいい

なんでSJISとか言い出すのかさっぱり分からんね。

507 :デフォルトの名無しさん:2006/12/29(金) 18:41:53
>>502
Encodingクラス
GetByteCount

508 :デフォルトの名無しさん:2006/12/29(金) 18:45:53
さっそく、みなさんどうもありがとう。
今すぐ、試してみます。

509 :デフォルトの名無しさん:2006/12/29(金) 18:48:22
>>502
Convertクラス
でバイト列変換も有りかな

510 :デフォルトの名無しさん:2006/12/29(金) 19:54:32
502,508です
いろいろやって見ましたが、Encoding.GetByteCount の使用法が分かりません。
using System.Text; で、Encoding.GetByteCount(str) とすると、
静的でないフィールド、メソッド、またはプロパティ 'System.Text.Encoding.GetByteCount(string)' で、オブジェクト参照が必要です。
とのエラーが出ます。

MSDN によると
Encoding.GetByteCount メソッド (String)
派生クラスでオーバーライドされた場合、指定した String に含まれる文字をエンコードすることによって生成されるバイト数を計算します。
とあって、なにやら専用のメソッドを用意しなければならないようです。

なので、単純に文字数の2倍で良しとします。

511 :デフォルトの名無しさん:2006/12/29(金) 20:01:47
クラスとかインスタンスとか理解しな。
Encodingはクラス。
GetByteCountはstaicがついてないんだからインスタンスメソッド。
Encodingはいろんなエンコードを表す基底クラス。
たとえばShift_JISエンコードでいろいろしたいなら、
具象クラスのインスタンスをまず取得する必要がある。
EncodingでGetByteCountって、何のエンコーディングでのバイト数かわからんだろ?


512 :デフォルトの名無しさん:2006/12/29(金) 20:22:37
GetByteCount でググればそれこそ
ぼろぼろ使用方法が出てくるのに
こういうやからはなぜそういうことをしない。

513 :デフォルトの名無しさん:2006/12/29(金) 20:33:57
>>502のような訳の分からん質問をしている時点でMSDNの読み込みが足らんのは明白だろ。

514 :デフォルトの名無しさん:2006/12/29(金) 20:40:03
俺の勘違いだったら悪いんだが、

C#のデフォルト文字コードってUTF-8じゃないの?


515 :デフォルトの名無しさん:2006/12/29(金) 20:43:20
http://msdn2.microsoft.com/ja-jp/library/system.char.aspx

516 :デフォルトの名無しさん:2006/12/29(金) 20:45:40
C#のデフォルト文字コード
ってどういう意味なの?

517 :デフォルトの名無しさん:2006/12/29(金) 20:47:03
エスパーすると、CLRがUnicode文字の表現に使っている内部エンコーディング、のことじゃね?

518 :デフォルトの名無しさん:2006/12/29(金) 20:55:29
502です
あるサイトから、Encodingの使い方は分かりました。
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
string str = "こんにちわ";
int num = sjisEnc.GetByteCount(str);
しかし、これは、Shift_JIS に変換した後のバイト数です。
知りたかったのは、Unicode のままでのバイト数で、現在メモリ上に占めるサイズです。

519 :デフォルトの名無しさん:2006/12/29(金) 21:01:11
釣りですか?

520 :デフォルトの名無しさん:2006/12/29(金) 21:02:11
>>515
Thx

ファイル関係はUTF-8 ?
http://msdn2.microsoft.com/ja-jp/library/system.io.streamwriter(VS.80).aspx

で、Encoding.DefaultはShift-JIS
ややこしいなぁ

521 :デフォルトの名無しさん:2006/12/29(金) 21:08:54
>>520
Encoding.Defaultはシステム規定の符号化方式。

お前さんがWindows日本語版を使っているから、
たまたまCP932(Shift_JISのマイクロソフト拡張)になっているだけ。

522 :デフォルトの名無しさん:2006/12/29(金) 21:27:34
>>518
残念ながら参照型がどれだけのメモリを占有しているかを測る方法は存在しない。

というか、それを知って何がしたいん?

523 :デフォルトの名無しさん:2006/12/29(金) 22:03:04
"Shift_JIS"って文字列で指定してるからそこを"Unicode"に
すればUnicodeでのバイト数がでるってすぐに想像つかないのか?
>>518の思考能力がすげー低いってことがわかった。

524 :デフォルトの名無しさん:2006/12/29(金) 22:05:13
まあもうLength * 2でいいけど、
結局何がしたいんかさっぱり分からん。


525 :デフォルトの名無しさん:2006/12/29(金) 22:15:05
アプリ稼働中のメモリ使用量を求めたかったのでは?

526 :デフォルトの名無しさん:2006/12/29(金) 23:05:17
メモリ使用量って?


527 :デフォルトの名無しさん:2006/12/29(金) 23:09:21
そのアプリが最大どれだけのメモリを必要とするか
それ知らんと、メモリをどれだけ積めばいいのか見積もれんのでは?

528 :デフォルトの名無しさん:2006/12/29(金) 23:10:05
Unicodeにこだわってるからそれは無いのかな?w

529 :デフォルトの名無しさん:2006/12/29(金) 23:15:07
ガーベジコレクタに訊けば教えてくれるんじゃね?

530 :デフォルトの名無しさん:2006/12/29(金) 23:22:09
>>529
そうなんだ
C#知らんからおれw
スマソ

531 :デフォルトの名無しさん:2006/12/29(金) 23:29:01
質問です。
埋め込むリソースに"hoge.bin"が存在するとして、
その"hoge.bin"をファイルとして保存する手順というか方法がわかりません。

一応、そのリソースをResourceManagerに読み込ませる所まではできています。
よろしくお願いします。

532 :デフォルトの名無しさん:2006/12/29(金) 23:29:46
そんな理由で文字列のバイト数調べてどうする。


533 :デフォルトの名無しさん:2006/12/29(金) 23:36:59
>>531
何がしたいのかさっぱりわからんが、ファイル開いて書き込めばいいんじゃないの?

534 :デフォルトの名無しさん:2006/12/29(金) 23:37:26
>496
2chの専ブラってdelphiのものが多いよな。
delphiでやれば?

535 :531:2006/12/30(土) 00:51:35
>>533
できました。dクス。

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

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)