1 名前:デフォルトの名無しさん [03/10/04 01:02] このスレッドは 「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。 ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、 勇気をもって書き込んでください。 少しずつC#プログラマを名乗るものが現れました。みなさん一緒に勉強しましょう。 前スレッドはこちら pc2.2ch.net/test/read.cgi/tech/1059028988/l50 (Part4) pc2.2ch.net/test/read.cgi/tech/1047210828/l50 (Part3) pc2.2ch.net/test/read.cgi/tech/1035895873/l50 (Part2) pc2.2ch.net/test/read.cgi/tech/1023766485/l50
136 名前:デフォルトの名無しさん mailto:sage [04/06/10 16:22] スマソ。C#というよりVS.NETの話でした。
137 名前:デフォルトの名無しさん [04/06/16 14:13] CheckedListBoxを既にItems.Addで追加済みなんですが、この内容をコードで順番にCheck,Uncheckするにはどうでればよいでしょうか?
138 名前:デフォルトの名無しさん [04/06/17 19:15] リフレッシュレートの変更はAPI使わないとだめなんでしょうか。 そもそもそんなもんを作るなって言語なんでしょうか。 意外と出来ないことが多くてびっくりしてます。
139 名前:デフォルトの名無しさん [04/06/18 03:03] C#.NETで開発しています。exeからdllを呼んでいてdllもC#で作っています。 dll内にステップインで入ってデバッグしたいのですが、入れるときと入れないとき があります。何が原因でしょうか? dllはグローバル アセンブリ キャッシュにインストールして使っています。
140 名前:139 mailto:sage [04/06/18 08:08] dllがデバッグだったりリリースビルドだったりしてるんでないの
141 名前:140 mailto:sage [04/06/18 08:09] ちがう。>139としたかったの...orz
142 名前:139 mailto:sage [04/06/18 21:10] >>140 レスありがとうございます。今日やっと分かったのですが exeと同じところにdllを置いたらできました。 ビルドのオプションでローカルコピーをtrueにしたりfalseに したりしていたようです。
143 名前:デフォルトの名無しさん mailto:sage [04/06/25 06:59] 教えて下さい。 Windows.FormでGUIアプリを作っているとします。 編集メニューでコピーにCtl+Cを割り当てて、 とあるコントロールにはこのメニュークリックのイベントで 処理したいんだけど、別の(例えば普通のテキストボックス)には デフォルトのコピー処理をさせたい。 でないとそれぞれのコントロールごとに処理を書くはめになるので。 必要ないコントロールの場合はイベントをスルーすればいいんでしょうが、 どう書けばいいんでしょうか?
144 名前:デフォルトの名無しさん [04/06/25 07:11] 上げ忘れてた。。
145 名前:デフォルトの名無しさん mailto:sage [04/07/02 21:47] タイマーの使い方を教えてください。 あるボタンを押した時から、1000msごとにのこり時刻を [10秒経過 / 残り170秒] というように表示させたいです
146 名前:デフォルトの名無しさん [04/07/02 21:50] あげわすれた
147 名前:デフォルトの名無しさん mailto:sage [04/07/02 21:59] >>145 「シンプルな時計」でやってるよ homepage3.nifty.com/midori_no_bike/CS/index.html
148 名前:デフォルトの名無しさん mailto:sage [04/07/02 23:47] >143 きれいにやるならそういうフレームワークを作る そすると他のでも使える どこまでやるかは時間次第
149 名前:デフォルトの名無しさん [04/07/03 09:10] とりあえずVisualStudio2005のC#の言語仕様に拡張があるのかどうか知りたいのですが、 VisualStudio2005言語仕様の概要について書かれているホームページがあったら教えてもらえませんか?
150 名前:デフォルトの名無しさん mailto:sage [04/07/03 09:40] >>149 lab.msdn.microsoft.com/express/
151 名前:http:// v019240.ap.plala.or.jp.2ch.net/ mailto:ken01_2001@msn.com [04/07/03 10:46] guest guest
152 名前:デフォルトの名無しさん [04/07/04 15:57] Windowアプリ/Consoleアプリ兼用のアプリが作りたいんですけれど System.Console.Write 等の入出力を起動したConsoleアプリの入出力にする方法しりませんか?
153 名前:デフォルトの名無しさん mailto:sage [04/07/04 18:41] >>152 どういう意味か良く分からないんだが…
154 名前:デフォルトの名無しさん [04/07/09 17:42] textBoxに半角数字しか入力できないようにする方法はありますか? ImeModeをOFFにしてみたけど、これじゃ半角英数字になってしまうんです。
155 名前:デフォルトの名無しさん mailto:sage [04/07/10 01:06] 調べろ。わからなかったら自分で作れ
156 名前:デフォルトの名無しさん mailto:sage [04/07/10 01:37] よぅ。カスども。 俺C#やったことないんだけど、質問してもいい? みんなC#ってなにに使ってんの? 「ネイティブコード吐けるJava」みたいな認識で買おうか迷ってんだけど、 そんなノリで買ってもいいものなんですか?
157 名前:デフォルトの名無しさん mailto:sage [04/07/10 01:48] theSpoke効果だな
158 名前:デフォルトの名無しさん mailto:sage [04/07/10 02:52] >>156 10個は買えバカ
159 名前:156 mailto:sage [04/07/10 03:29] 買うなら1個でいいよ。 やっぱASPで使ってんの? それともクライアントアプリ? どうなのよ。
160 名前:デフォルトの名無しさん mailto:sage [04/07/10 09:29] それを聞いて何かが変わるのか?
161 名前:デフォルトの名無しさん [04/07/10 10:30] > 「ネイティブコード吐けるJava」みたいな認識 全然違う > やっぱASPで使ってんの? ASP.NET か? > それともクライアントアプリ? どっちもだろ。
162 名前:156 mailto:sage [04/07/10 12:47] >>160 あー、「結局どーしてーのよ?」みたいななるわな。 具体的にはC/Sタイプのアプリのクライアント側を何で作るか迷ってるのよ。 仕事の合間の趣味の話だから手ごろそうなC#がいいのかなと。 どんなん作りたいかっていうと、MSメッセンジャーみたいのだと思ってくれればいいな。 >>161 全然違うんか。 今まではクライアントアプリっつーとVCかDelphiか、まぁVBとかだったわな。 VCしかできねーけど。 んでひょっこりでてきたC#はどーなのよと思ってな。 Javaでもいんだけど、インストールの説明に「J2SE1.4ランタイムが必要です」って書くのと、 「.NETFrameforkランタイムが必要です」って書くのとじゃちょっとイメージ違うしな。
163 名前:名無しさん@そうだ選挙に行こう [04/07/11 10:34] terrarium1.2になりますた www.terrariumgame.net/terrarium/
164 名前:名無しさん@そうだ選挙に行こう [04/07/11 12:50] >>162 次期VS.NET(2005)は単体言語版(C#だけとか)で Web(ASP.NET)機能を除いたグレードのものが格安で 出るらしいです。 趣味ならこれ使ってC#の非Webアプリを創るのが 非常に快適ではないかと思う。VCできるならなおさら VB.NETに走る必要もないわけだし。 一つだけ問題があるとすれば、2006〜2007年予定の 次世代Windows(Longhorn)までは.NETFrameworkが デフォのAPIじゃないことだろう。なのでフリーウェアとか シェアウェアで早期にアプリを公開するつもりなら これは向いていない。
165 名前:名無しさん@そうだ選挙に行こう mailto:sage [04/07/11 13:28] C#にはウニオン型は無いの?
166 名前:名無しさん@そうだ選挙に行こう mailto:sage [04/07/11 13:45] struct でオフセット弄る
167 名前:名無しさん@そうだ選挙に行こう mailto:sage [04/07/11 15:14] int?ってなんか萌えるな
168 名前:156 mailto:sage [04/07/11 20:52] >>164 素敵情報サンクス。 サーバ(C++)とクライアント(Java)で作りつつ、 教えてくれた安価モデルが発売されたらクライアントをC#に移植 みたいな方向で考えてみるよ。 時期OSで.NETFrameworkが標準じゃなくなるってのは寝耳に水だけど、 さすがにバンドルされてないとは考えられないから、 あまりそっちは気にしなくていいかもな。 でもちょっと怖いから調べててみることにする。 マジサンクス!
169 名前:デフォルトの名無しさん mailto:sage [04/07/12 10:00] > 時期OSで.NETFrameworkが標準じゃなくなるってのは寝耳に水だけど そんなこと誰も書いてないでしょ
170 名前:デフォルトの名無しさん mailto:sage [04/07/12 15:03] >>165 なくなっちゃったよ、せっかくintやらのビット数固定にしたんだから、 その範囲でのみでても付けてもらえると便利っていうか、Cより安全確実でよかったんだけどね。 ちょとさびしい。 頑張ってstruct使ってビットフィールド操作関数作るしかないっすね。
171 名前:デフォルトの名無しさん mailto:sage [04/07/12 15:56] >>169 WinFXのことだろ。
172 名前:156 mailto:sage [04/07/12 23:10] defaultとstandardはこの場合同意語にならんか? それともそーゆーことじゃないのか? なんにせよいろいろややこしそうだな。
173 名前:デフォルトの名無しさん [04/07/14 16:27] 生成済みのオブジェクトの型を調べて、 それの型と同じ型で new をする方法があったら教えてください。 class ClassA() { ... } class ClassB() { ... } ... class MyApp { void test() { object [] list = { new ClassA() , new ClassB() } ; foreach( object i in list ) { sub( list[ i ] ) ; } } void sub( object a ) { 「aの型=ClassA/ClassB」 localData = new 「aの型=ClassA/ClassB」() ; ... } } といった事をしたいのですが、System.Reflection を使えばできると聞いたのですが、 分りやすいサンプルがあったらよろしくお願いします。
174 名前:デフォルトの名無しさん mailto:sage [04/07/14 16:40] >>173 object localData = a.GetType().GetConstructor().Invoke( new object [] {} );
175 名前:デフォルトの名無しさん mailto:sage [04/07/14 17:02] >>174 有難うございます、助かりました。
176 名前:デフォルトの名無しさん mailto:sage [04/07/14 23:14] >>175 でも、実装の仕方としては、class A, B を ICloneable にして Clone() メソッド書くのが普通な気が。
177 名前:デフォルトの名無しさん mailto:sage [04/07/14 23:28] >>175 それでほんとに問題ないのかちゃんと確認した方がいいぞ。
178 名前:デフォルトの名無しさん mailto:sage [04/07/15 06:59] >>176 リフレクションの使い方の取っ掛かりが欲しかったので、構わないんです。 コンストラクタ以外にもメソッドを呼び出すときに、もっと複雑なことになるし、この辺りは覚悟していましたし いずれにしても template が実装されるまでの繋ぎなので。
179 名前:デフォルトの名無しさん mailto:sage [04/07/15 07:06] >178 どうtemplateにからむんでしょう?個人的に興味
180 名前:デフォルトの名無しさん mailto:sage [04/07/15 19:08] ダウンキャストを知らないだけだったりして…
181 名前:デフォルトの名無しさん [04/07/15 20:30] C#の宿題スレはまだ無いみたいなのでここにて。 C#で簡易telnetを作れという問題です。通信の方法がそもそも分かりません
182 名前:デフォルトの名無しさん mailto:sage [04/07/15 21:02] >>181 ソケット作れ
183 名前:デフォルトの名無しさん mailto:sage [04/07/15 21:10] 言語依存じゃない部分が分かってないんだろ?
184 名前:デフォルトの名無しさん mailto:sage [04/07/15 21:11] >>181 TCPで接続してTELNETプロトコル話せばいいだけ www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=telnet+%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB
185 名前:デフォルトの名無しさん [04/07/20 13:26] IList をインターフェイスに持つオブジェクトでシリアル化する時、上手く行かなくて地団駄踏んでいます。 System.Runtime.Serialization.Formatters.Soap.SoapFormatter で、オブジェクトをXmlにシリアライズする時は ISerializable でカスタマイズできるみたいですが、 System.Xml.Serialization.XmlSerializer で、オブジェクトをXmlにシリアライズする時でカスタマイズできる方法は無いんでしょうか? 知っている人いますか? IList を入れていると、XmlSerializerが頑張っちゃって自動的にシリアライズしてしまうみたいで・・・ IListが入っていても普通のクラスのように振舞わせる事はできないのでしょうか?
186 名前:デフォルトの名無しさん mailto:sage [04/07/20 15:14] >>185 取りあえず簡単なIListを実装したコレクションを作ったけど普通にシリアライズ・デシリアライズできたぞ。 XmlSerializerは手軽に使えてカスタムしにくいのが特徴なので、まあいろいろ勘案して。 シリアライズ用の別クラスを作るとか。
187 名前:デフォルトの名無しさん mailto:sage [04/07/20 15:23] あ〜、>186の一行目はちょっと勘違いというか見当違い。無視して。
188 名前:デフォルトの名無しさん mailto:sage [04/07/20 15:23] >>186 あぅ、書き損じたんですが、添え字にマイナス値を使えるようにするとアウトなんですよ。 ヘルプを見ると、this[int]インデクサプロパティーを見ているようで、Countとセットで 動作しているみたいなんです。 当然動作するわけも無いのですが、ここでIListを見て勝手に動作されるとちょっと具合が悪いので、 この機能に寝ていてもらいたいのですが、手段が見つからない・・・・
189 名前:デフォルトの名無しさん [04/07/22 11:01] 単純に足し算するだけのメソッドなんですが、 public int Add() { return 10+10; } 下のように使うと、Add()の戻り値は変数aに入りますよね。 public void Test() { int a = Add(); } 以下の場合だと、Addの戻り値はどこへ格納されるんでしょうか? publi void Test() { Add(); }
190 名前:デフォルトの名無しさん mailto:sage [04/07/22 11:03] そのまま破棄されるだけだが。
191 名前:デフォルトの名無しさん mailto:sage [04/07/22 12:31] C系言語の特徴で int main() { 10 ; } とやっても、文としては正しいと認識されます と、書こうとして、C#でやったら、意味が無いって怒られました。 さすがにチェックすることにしたみたいですね。
192 名前:デフォルトの名無しさん [04/07/27 20:11] public int hoge; //hogeは1から100をとる 上の場合、publicだから外からどんな値が来るかわかりません。 hogeに値が代入された時に、hogeが正しい値かどうかを調べるにはどうしたらいいんですか
193 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:16] >>192 プロパティにしてsetアクセサの中でチェックする。 つかまさにそのためにプロパティがあるんだが。
194 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:17] プロパティにする
195 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:28] set{ if(value >= 1 && value<=100) hoge = value; else throw new FormatException(); } みたいにすればいいんですね。なるほど
196 名前:デフォルトの名無しさん mailto:sage [04/07/27 20:31] どうでもいいがその例だとArgumentOutOfRangeExceptionの方が妥当だな。
197 名前:デフォルトの名無しさん mailto:sage [04/07/31 15:21] >>195 public int hoge { set { if (1 <= value && value <= 100) hoge = value; else throw new ArgumentOutOfRangeException(); } } ちょっと無理っぽいが、通るのか?
198 名前:デフォルトの名無しさん [04/07/31 18:44] GDI+はGDIより遅いって本当ですか?
199 名前:デフォルトの名無しさん mailto:sage [04/07/31 19:54] >>198 自分で作って確かめろ、タコ
200 名前:デフォルトの名無しさん mailto:sage [04/07/31 20:58] >ちょっと無理っぽいが、通るのか? なんで?
201 名前:198 [04/08/01 09:38] >199 GDIはBitbltで GDI+はGraphics.DrawImageで 確かめて良いですか?
202 名前:デフォルトの名無しさん mailto:sage [04/08/01 11:55] GDI+は長角まで待つべし
203 名前:デフォルトの名無しさん mailto:sage [04/08/01 12:31] リフレクションを使ってラムダ式を動的に作りたいのですが、 参考になるHPや良い方法があったら教えてください。 例えば、正規分布関数のクラスが、以下のように存在していて public class DistributionFunctions { public static dobule Normal( double x , double a , double v ) { return 1.0 / Math.Sqrt( 2 * Math.PI * v ) * Math.Exp( -(x-a)*(x-a)/( 2 * v ) ) ; } ... } やりたい事は、 delegate double DoubleToDoubleDelegate( double x ) ; public class DistributionDelegates { static DoubleToDoubleDelegate MakeNormal( double a , double v ) { ここに手際よく大量生産できるコード } } 使い方は void hogehogeMethod() { DoubleToDoubleDelegate df = MakeNormal( 0.0 , 1.0 ) ; y = df( 0.0 ) ;// ここで y = Normal( x , 0.0 , 1.0 ) が呼び出される }
204 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:03] >>203 よくわからんけど、こんなこと↓がしたいの? using System; public class DistributionFunctions { double a; double v; public DistributionFunctions(double x, double y){ a = x; v = y; } public double Normal( double x ) { return 1.0 / Math.Sqrt( 2 * Math.PI * v ) * Math.Exp( -(x-a)*(x-a)/( 2 * v ) ) ; } } delegate double DoubleToDoubleDelegate( double x ); class Hoge { static DoubleToDoubleDelegate MakeNormal( double a , double v ) { //ここに手際よく大量生産できるコード DistributionFunctions f = new DistributionFunctions(a, v); return new DoubleToDoubleDelegate(f.Normal); } static void Main() { DoubleToDoubleDelegate df = MakeNormal( 0.0 , 1.0 ) ; double y = df( 0.0 ) ;// ここで y = Normal( x , 0.0 , 1.0 ) が呼び出される Console.WriteLine("y = {0}", y); } }
205 名前:204 mailto:sage [04/08/01 16:27] public class DistributionFunctions { の{の前に全角スペースが入ってた。。。鬱
206 名前:デフォルトの名無しさん mailto:sage [04/08/01 16:28] C#でGDIをつかうすべはあるのか?APIの直たたきならGDIをつかえる?
207 名前:デフォルトの名無しさん mailto:sage [04/08/01 18:33] >>204 方法は問わないんですが、そうです、そんな感じです。 そこで、関数の引数を確保するクラスを作る必要がありますよね。 関数の数が多くて、これを全部自動生成してしまいたいんです。
208 名前:204 mailto:sage [04/08/01 20:00] >>207 > そこで、関数の引数を確保するクラスを作る必要がありますよね。 > 関数の数が多くて、これを全部自動生成してしまいたいんです。 204の例を使っても、好きなだけ関数は作れるけど。。。↓こういうことではない? static void Main() { double d1 = 1.0; // 数字は適当 double d2 = 1.0; // 数字は適当 DoubleToDoubleDelegate[,] df = new DoubleToDoubleDelegate[10,10]; for(int i=0; i < 10; i++, d1 += 0.2){ for(int j=0; j < 10; j++, d2 += 0.2){ df[i,j] = MakeNormal( d1, d2); } } for(int i=0; i < 10; i++){ for(int j=0; j < 10; j++){ double y = df[i,j]( 0.0 ) ; Console.WriteLine("y = {0}", y); } } }
209 名前:デフォルトの名無しさん mailto:sage [04/08/01 21:52] >>208 ども、お手数掛けてすみません。 対象となる関数は、正規分布関数のようにパラメータ二つだけとは限りませんし、 今後、多変数に対応するにあたって、このまま場当なやり方で行きますとプログラムの保守が危機的になると考え 第一段階として、現在はC#のソースコードを自動生成するプログラムを作って対応しています。 しかし、これも必ずしも良い方法とも言えず、もっと効率的にプログラムできる方法として、 色々探している内にリフレクションという物を使ってみようかと考えていました。 さっそく始めてみたのですが、これがチュートリアルの良いページがなかなか見つからなくて・・・・ ちなみに僕自身、ここに書き込む前に色々考えたのですが、 一般的なC#の構文を使った範囲内ではおそらく良い解決方法はないだろうというのが結論でした。
210 名前:デフォルトの名無しさん [04/08/01 22:20] はじめまして、 C#でデータベースに関することを勉強しています。 ボタンを押すとアクセスに「123」というデータを追加するプログラムを書いています。 壁にぶつかりましたので、ご指導していただけませんか。 odbcDataAdapter1などの設定し、以下のボタンの内容を書きました。 odbcConnection1.Open(); odbcDataAdapter1.InsertCommand.Parameters["@ab"].Value="123"; odbcDataAdapter1.InsertCommand.ExecuteNonQuery(); odbcDataAdapter1.Fill(dataSet11); odbcConnection1.Close(); すると 'System.IndexOutOfRangeException' のハンドルされていない例外が system.data.dll で発生しました。
211 名前:デフォルトの名無しさん mailto:sage [04/08/01 22:24] > 対象となる関数は、正規分布関数のようにパラメータ二つだけとは限りませんし、 > 今後、多変数に対応するにあたって、このまま場当なやり方で行きますとプログラムの保守が危機的になると考え > 第一段階として、現在はC#のソースコードを自動生成するプログラムを作って対応しています。 これが結構まっとうな方法な気もしますが。。。 もしかして、パラメータが変わるだけではなく、どんな関数を作るかは あらかじめ決まってない、ってことですか? C++でいえば、boost::lambdaみたいなことをしたいのかなぁ? > しかし、これも必ずしも良い方法とも言えず、もっと効率的にプログラムできる方法として、 > 色々探している内にリフレクションという物を使ってみようかと考えていました。 リフレクションで出来るかどうかはわかりませんが、一応参考に。 members.jcom.home.ne.jp/1213687801/cs/reflection/reflection4.html www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemreflectionemittypebuilderclasstopic.asp
212 名前:デフォルトの名無しさん mailto:sage [04/08/01 23:01] >>210 ここにある例が参考になりませんかね。 www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatasqlclientsqldataadapterclassinsertcommandtopic.asp
213 名前:デフォルトの名無しさん mailto:sage [04/08/02 08:36] 普通に IDbCommand.ExecuteNonquery() はダメなの?
214 名前:デフォルトの名無しさん [04/08/03 21:03] プログラムの構造をどうしたらいいのかが分かりません。 例えば、オセロプログラムを考えるとします。 オセロのマスの部分にButtonから継承したクラスMasuを使います。 Masuを8*8個集めた配列をBoardとします。 オセロゲーム ━━ Board (集約する)━━ Masu という風になっていますが、 Masuがクリックされた時に 隣のマスをひっくり返すかどうか走査するとしても、 Masuからは隣のMasuなんて分かりませんよね? だからBoardに頼んで調べてもらいたいわけですが どうやったらそうできるのかがわからないです。どうしたらいいのですか?
215 名前:デフォルトの名無しさん mailto:sage [04/08/03 21:07] X 配列Board O クラスBoard でした
216 名前:デフォルトの名無しさん mailto:sage [04/08/03 21:43] >>214 Masu に必要な機能は、 ・そのマスの内容を保持 ・画面に描画する ・クリックされたことを、Board に通知する の3つでいいんじゃない? ひっくり返すのは、Board でやればいい。
217 名前:デフォルトの名無しさん [04/08/03 23:21] >>216 その三番目のboardに通知する方法が分からんですよ。
218 名前:デフォルトの名無しさん mailto:sage [04/08/03 23:32] >>217 Clickイベント。
219 名前:デフォルトの名無しさん mailto:sage [04/08/03 23:51] >>217 boardのメソッドの引数に自分を渡せばいい。
220 名前:デフォルトの名無しさん mailto:sage [04/08/04 00:18] >214 もっと PlayerとかTurnMasterとかJudgeとかつくれや。Masuはいらん
221 名前:デフォルトの名無しさん mailto:sage [04/08/04 00:53] >>220 高度すぎ。質問者をみて答えてやれよ。
222 名前:デフォルトの名無しさん mailto:sage [04/08/04 00:56] >221 書き込んだ後そう思った.すいません。 Masu作るときにボードを引数で渡してそれ使う.それかイベント
223 名前:デフォルトの名無しさん [04/08/04 23:39] こういうのってできるかな? void Hoge( params object [] arg ) の ref バージョンで void Hoge( ref object arg0 , ref object arg1 , ref object arg2 ... ) ; の様な物。 必要個数分オーバーロードするしかないかな?
224 名前:デフォルトの名無しさん [04/08/05 00:33] コントロールのクライアント領域について質問です。 以下のような Panel を継承したクラスをつくりました。 public class PanelEx : System.Windows.Forms.Panel { public PanelEx() { } protected override void OnPaint(PaintEventArgs e) { base.OnPaint (e); Pen p = new Pen(Color.Black, 1); e.Graphics.DrawRectangle(p, this.ClientRectangle); p.Dispose(); } } この PanelEX クラスのインスタンスを、普通に Form1 の コンストラクタ内で生成したところ、画面には PanelEx の 左側と上側にしか線がひかれません。 なぜでしょうか?また、どうすればちゃんと矩形が描かれますか?
225 名前:デフォルトの名無しさん mailto:sage [04/08/05 00:55] >>224 はみ出て見えないので矩形を小さく、例えば幅と高さを-1にしたりする。
226 名前:224 [04/08/05 01:29] >>225 ええええー。なぜそんな仕様になってるんでしょうか?
227 名前:デフォルトの名無しさん [04/08/05 02:00] >>226 厨避けの為。
228 名前:デフォルトの名無しさん mailto:sage [04/08/05 02:03] >>226 別におかしくないよ。 www.microsoft.com/japan/msdn/library/ja/jpdnprogwincsharp/htm/chapter15.asp?frame=true
229 名前:デフォルトの名無しさん mailto:sage [04/08/05 10:20] >>220 ウヒャー 220さんの高度な設計だと、どんな風になるんですか? コードをつけながら説明してほしい・・・
230 名前:デフォルトの名無しさん mailto:sage [04/08/05 19:29] >>229 高度 コード !?
231 名前:デフォルトの名無しさん [04/08/05 22:23] 超基本で悪いんだけど、 int i = Console.Read(); Console.WriteLine(i); これでたとえば「2」を入力すると出力が「50」なんてなるんですが、なぜなのでしょうか?
232 名前:デフォルトの名無しさん mailto:sage [04/08/05 22:31] >>231 コンピュータの中では、「文字」ってのは一定のルールで数字の列に変換されて扱われてます。 このルールのことをエンコーディング、数字(の列)のことを文字コードと呼んだりします。 んで、文字の "2" に対応するコードが 50 (16進数で 0x32) なわけです。 ファイルやネットワーク等での読み書きは、byte の列を使って行われるのが基本で、 .Net Framework で文字列からこのバイト列に(またはその逆に)変換するには、 Encoding クラス(のインスタンス)を用います。
233 名前:デフォルトの名無しさん mailto:sage [04/08/05 22:31] P.S. "2"という文字列から、数字の 2 に変換するには、Int32.Parse() などを使います。
234 名前:231 mailto:sage [04/08/05 22:36] >>232 文字コードを実数値にしないといけないんですね。 丁寧な即レスありがとうございます。
235 名前:デフォルトの名無しさん mailto:sage [04/08/06 00:26] 久しぶりにきたが、なんだかいいスレになってるじゃねーか!
236 名前:デフォルトの名無しさん mailto:sage [04/08/06 07:42] コンソールはほとんど勉強してなかったから試してみたんだけど char c = (char)Console.Read(); とすれば、そのまま表示できまっせ。MSDNだとintを返すことになってるから まぎわらしいんだけどね。