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


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

C#, C♯, C#相談室 Part52



1 名前:デフォルトの名無しさん mailto:sage [2009/04/01(水) 10:15:52 ]
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C#, C♯, C#相談室 Part51
pc12.2ch.net/test/read.cgi/tech/1233757615/

Visual C# 2008 Express Edition 日本語版
www.microsoft.com/japan/msdn/vstudio/express/vcsharp/

その他テンプレ>>2-5くらい

800 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:24:26 ]
いつものC++の頭おかしい人では、ほんと困ります

801 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:25:21 ]
うん。スレ違いです。

802 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:26:16 ]
C++のスレもヤツと思わしき書き込みでメチャメチャになってるんだが
C++の中の人も大変だなw

803 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:33:16 ]
>>798
仮にそうだとしても、配列由来の操作を隠蔽しなければならない確固たる理由はなくね?
事実、C#以外の多くの言語では、スタック操作は配列操作の一部として扱われているわけで。

804 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:45:28 ]
ゲームプログラムなら俺に聞けスレも悲惨な有様だね、死んでしまえばいいのに

805 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:47:56 ]
自分は、VectorからStackが派生しているJavaは気持ち悪いと思う。
反対の、IStackやIQueueがあって、IListがその2つ(やその他)を継承するという作りのほうが自然に感じる。

806 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:48:31 ]
framework 4.0 の並列処理機能についてMSをのぞいて詳しく書いてあるサイトでわかりやすいところない?



807 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:52:42 ]
継承しないで、独立の実装されるのが理想だと思うな。
class ListStack : IList , IStack ←ないけど
class Stack : IStack ←ないけど
どちらも実装は同じでもいいだろう、しかし使う側がちゃんと考えて配列アクセスが不要ならStackを使うとしてくれるとListStackとStackの実装は後で変えることもできる。
基礎ライブラリなので変えることはしないだろうが、実際の開発ではこれが決定的な差になる。

808 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:02 ]
>>805
それだと、スタック操作を定義しないListが作れないような



809 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 21:57:51 ]
作りとしてはこんな感じかな
class ListStack : IList , IStack {
List list;
各種実装
}

class Stack : IStack {
ListStack list;
IStack で公開されるメンバーのみ公開しておく
}

これならListより配列の方が効率的だからという理由で後から object [] といった具合に変えて高速化する事も可能だろう。
上のDoubleListの例でいえば、Listを継承してしまうとListの機能に固定されてしまう訳だ。

810 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 22:30:22 ]
ふらっとが落ち着いたと思ったら、今度はこっちが荒されてて笑った

>>806
一番詳しい所は、Parallel Extensionsチームのブログ
日本語で詳しく書いてある所は知らない。

811 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:30:12 ]
あまりの流れに素で>>806をスルーしてたw
>>810を見て初めて存在に気づいたw

812 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:49:31 ]
うん、確かに分かりやすく記述してあるな。
ただbeta1だけにそもそも手を出さないのが正解かもしれんな。

813 名前:デフォルトの名無しさん mailto:sage [2009/06/08(月) 23:55:20 ]
>>803
配列由来の操作を隠蔽しなかったら
他の実装に変えられなくなるじゃん。

814 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:41:17 ]
現在、とある目的のための汎用エディタをつくっているのですが、
GUIを楽に実装したいのでPropertyGrid を使いたいです。

しかし、なんせ汎用エディタなので、設定の項目は xml で定義できるようになっているため、
設定項目をまとめたものをクラスとして定義して PropertyGridに渡す」ということができません。

そういう場合でも PropertyGrid を使う事はできますか?

もしくは、空のクラスをつくって、設定ファイルに従って動的にプロパティを追加..
といったことができれば素直に PropertyGrid を使う事ができて楽なんですけど...



815 名前:デフォルトの名無しさん [2009/06/09(火) 01:51:26 ]
何に対して汎用的なのかサッパリーで
なんで汎用的だと設定項目がxmlになるのかよくわからん
IXmlSerializerとかなかったっけ

816 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 01:54:03 ]
できます

817 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:15:42 ]
すみません、まぎらわしい書き方でしたね。XMLうんぬんは全然関係なくて、
ようするに
項目名(プロパティ名)とその型(整数、文字列、実数)が設定ファイルで定義されている

設定をロードするまでプロパティの個数も名前も型もわからない

ソースコード上でクラスを定義できない

だから PropertyGridもつかえない?? ←ここが問題

こういう目的で PropertyGridをつかうにはどうすればいいのでしょう?
もしくは、動的にクラスのプロパティを追加したり削除したりするにはどうすればいいのでしょう?




818 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 02:40:53 ]
なんかnotepad++とかeclipseみたいな感じか

設定項目をxmlで記述するとして,
その設定項目を実際に反映させるのは誰の役目?
プラグイン方式にするのだったら設定項目を集めたクラスを,プラグイン側で公開するようにすればいいだけなんだけど



819 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 03:45:21 ]
TypeConverter を継承して、好き勝手な property を登録するという方法でやてみました。
その結果、TypeConverter を継承した MyPropConverter をつくり、

[TypeConverter(typeof(MyPropConverter))]
class Hoge{}

という空っぽの Hoge クラスのインスタンスを PropertyGrid.SelectedObject に指定することにより、
好きなだけ任意のプロパティ項目を表示できるようになりました。しかし...

たとえば
オブジェクトAを選択すると、設定テキストAの内容をつかってプロパティを表示、
オブジェクトBを選択すると、設定テキストBの内容をつかってプロパティを表示、
オブジェクトCを選択すると ... するというようにしたいのですが、
すると、いま選択されているのが AなのかBなのか、なんなのかを MyPropConverterが知る必要があります。
(オブジェクトの種類によって GetProperties の戻り値を帰る必要があるため)
これはどのように指定すれば良いのでしょう?

理想をいえば、MyTypeConverter のコンストラクタでそのまま設定テキストを渡して解析させ、
結果に応じて GetProperties の戻り値をかえたいです。しかしそのようにすると、

propertyGrid.SelectedIndex = new Hoge(); の行で実行時エラーになります。問題はそもそも
MyPropConverterのコンストラクタの呼び出し元はどこなのか?ということですが....



820 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 04:11:56 ]
>>819
ほれ
msdn.microsoft.com/ja-jp/library/system.reflection.emit.typebuilder.aspx
これなら何でもできるぞ

821 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:50:01 ]
プロパティの中にプロパティが入ってるやつ
Size 10, 10
 Width 10
 Height 10

それに似た感じで
Cube 10, 10, 10
 X 10
 Y 10
 Height 10
を作るにはどうしたらいいですか?

822 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 08:59:28 ]
何が分からないのか分からない
クラス/構造体の作り方が分からないのか?

823 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:17:26 ]
それは分かりました
クラスの中に構造体が入りません

824 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:20:04 ]
class Hoge {
 struct Point { public int X, Y }
 Point Size { set; get; }
}


825 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:27:10 ]
>>824
C/C++が混ざってるぞ

826 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:38:41 ]
>>825
いや、Y の後ろの ; 忘れてる以外は C# 的に問題ない。
コンパイル通るぞ。

827 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 09:57:30 ]
XとYのsetとgetはどこに書くのですか?

828 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:01:05 ]
構造体の中にプロパティが入らないからわけわからん・・・・



829 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:07:12 ]
>>826
ごめんPoint型のSizeは盲点だった

public struct Cube {
  private int width, height, length;
  public int Width { get { return this.width; } }
  public int Height { get { return this.height; } }
  public int Length { get { return this.length; } }
  public Cube(int width, int height, int length) {
    this.width = width;
    this.height = height;
    this.length = length;
  }
}

830 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:08:44 ]
>>827
クラスと同じ

>>828
何で入らないと思ったのかkwsk

831 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:39:17 ]
最後にreturn this;入れるのかな?
とりあえず仕組みは分かりました
ありがとうございます!

832 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 10:58:24 ]
この後この構造体使うプロパティ作ったんだけどビルドでIDE落ちる

833 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 11:36:21 ]
え、これ構造体の中のプロパティって全部使えないの??
外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない?

と思い始めてるけど勘違いしてるのかな

834 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:10:44 ]
>え、これ構造体の中のプロパティって全部使えないの??
イミフ。set書け
>外にまたそれ用のWidth、Height、Lengthのプロパティも作るなら構造体の中にプロパティじゃなくて変数だけでよくない?
プロパティが何のためにあるか理解してないようだな。

835 名前:デフォルトの名無しさん [2009/06/09(火) 12:24:54 ]
NetworkStream読み出し用のバッファとして、Queueクラス使うのって大げさすぎる?
なるべくコンパクトでオーバーヘッドの少ない方法がいいのだけど、自前でByte用の
リングバッファクラス作った方がよい?

836 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:51:55 ]
そのbyte列ってどういう用途に使って、どのくらいのサイズがあるの?

837 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 12:59:37 ]
>>836
相手PCからほぼ間断なく来るバイト列を読み込みながら、パケットとして処理出来るまで溜め込んで
パケットを解析して次の処理に渡します。

パケットのサイズは200バイト未満で可変です。
パケット間は区切り文字も何もなくダラダラと流れてきますが、途中○バイト目がパケットサイズに
なっているので、それを頼りにパケットを解析します。

838 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:24:36 ]
TypeDescriptorから深い世界へどうぞ。



839 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 13:59:32 ]
なんかここ最近どっかのスレで見たことあるような質問だな・・・

840 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 14:16:41 ]
>>837
Queueは大袈裟っつーか使い道が違うんじゃないかな
NetworkStreamから1バイトずつ読み取るつもりなわけでもあるまい

841 名前:デフォルトの名無しさん [2009/06/09(火) 15:05:23 ]
WebBrowser.GoSearch メソッド で、IEのデフォルトの検索ページに飛ばしています。
デフォルト設定では Google になっていて、これまでは必ずGoogleに飛んでいた
のですが、ここ数日設定していないのに、Bing に飛んでしまいます。

WebBrowser.GoSearch メソッドを使うとこのBingが自動的に選ばれてしまうのを
これまで通り正しくIEのデフォルトの検索ページに飛ばせるように戻せないでしょうか?
できましたら、変更の仕方を教えていただきたく、何卒よろしくです。

842 名前:841 [2009/06/09(火) 15:07:12 ]
OSはWindowsXpSP3、.NETはVer2.0です。よろしくお願いします。

843 名前:841 [2009/06/09(火) 15:11:43 ]
ああ!!わかりました、標準の検索ページ自体が書き換えられていました。
すみませんでした。。。申し訳ありません。。。

844 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:38:00 ]
バイト数が送られてくるならリングバッファとかじゃなくて、
単にキューでバイト配列を管理したらいいんじゃない?


845 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 15:45:01 ]
受信単位の内部バッファをQueueで溜め込むのは普通にありだろう。
深く考えずに単一バッファにして追記していって消費したバイト分を前にずらすという力技でもいけちゃいそう。
サーバの話なら論外だけど。

846 名前:デフォルトの名無しさん [2009/06/09(火) 16:32:02 ]
tcpClient tcp;
public NetworkStream ns;
public Queue<Byte> ReadQueue = new Queue<Byte>();
Byte[] ReadData = new byte[512];

public Test(string hostname, int port)
{
tcp = new TcpClient(hostname, port);
ns = tcp.GetStream();
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}

private void CBRead(IAsyncResult ar)
{
NetworkStream ns = (NetworkStream)ar.AsyncState;
Int32 cnt = ns.EndRead(ar);
for (int i = 0; i < cnt; i++)
{
ReadQueue.Enqueue(ReadData[i]);
}
ns.BeginRead(ReadData, 0, ReadData.Length, CBRead, ns);
}


Queueを使ってやりたいことは大体こんな感じです。
延々とバックグラウンドで受信しているイメージです。
パフォーマンス的にどうなのかなあ、自前リングバッファの方がいいのかなあと言う疑問でした。

ちょっと質問からずれるのですが、連続してストリームを処理する場合のBeginReadの
使い方ってこれであってます?

847 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:34:52 ]
Mainが無かったです

static void Main(string[] args)
{
test("192.168.1.100", 10001);
while (true)
{
while (wl.ReadQueue.Count > 0)
{
Byte b = wl.ReadQueue.Dequeue();
Console.Write(b.ToString("X2"));
}
}
}


848 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:47:38 ]
もうQueueなんて使わないでMemoryStreamに流し続ければいいんでない?
そしてCBRead()の最後がキモい
だれも止められないじゃん



849 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 16:55:12 ]
>>848
どうしてもバッファから取り出した分を詰める作業が必要なのでMemoryStreamはちょっと。

最後キモイですか。
我ながらこりゃあいいやと思ったんですが、どうしましょうか。

850 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:08:55 ]
んーいまいちQueueの用途がわからない
もしかして>>846は肝心の”取り出した分を詰める作業”が書かれていない?

しかも,そもそもTCPなんだからByte型のデータを自前でバッファする必要性をあまり感じないんだが.
むしろQueueに突っ込むのは,データストリームから取り出した使えるデータの方がヨサゲ

851 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:13:56 ]
だよね
少なくともバイト数が分かる仕様ぽいから、
受信スレッドがひたすらまとまり単位でバイト配列に取り出してバイト配列をキューに追加
処理スレッドがキューからひたすら取り出して処理すればいいような気がする。
ああ、スレッド間の同期はちゃんとやってね。


852 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 17:15:44 ]
その場合は簡単なブロッキングキューを作ればよりシンプルになるかも。

853 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 19:30:09 ]
>>810
亀だけどサンクス
思ったより知りたいことが書いてあったので為になった!

854 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:41:04 ]
public static object GetMyObject() {
 AssemblyName asmName = new AssemblyName("myAsm");
 AssemblyBuilder asmBuilder = AppDomain.CurrentDomain.DefineDynamicAssembly(asmName, AssemblyBuilderAccess.Run);
 ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule("myModule");
 TypeBuilder typeBuilder = modBuilder.DefineType("myClass", TypeAttributes.Public, typeof(object));
 typeBuilder.DefineField("x", typeof(int), FieldAttributes.Public);
 typeBuilder.DefineField("y", typeof(int), FieldAttributes.Public);
 Type mytype = typeBuilder.CreateType();
 return Activator.CreateInstance(mytype);
}

という動的クラスのインスタンスを返す関数を作って

propertyGrid.SelectedObject = GetMyObject();

とやってみましたが、プロパティグリッドにはなにも表示されません。
GetMyObject() の戻り値をみてみたところ、クラス名 myClass で
メンバ x, y も存在し、意図したとおりのクラスとインスタンスが
生成されているように見えるのですが、プロパティグリッド反映されないのはなぜなのでしょうか?



855 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:45:43 ]
だってobjectだもの

856 名前:デフォルトの名無しさん [2009/06/09(火) 20:46:32 ]
肝心のプロパティを定義してないじゃないか

857 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:53:34 ]
そうだった
objectじゃなくてもいいんだった

858 名前:デフォルトの名無しさん [2009/06/09(火) 20:56:33 ]
プロパティグリッドで使うだけなら本当に型を生成しなくてもTypeDescriptorで簡単にプロパティを追加できるよ



859 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 20:57:59 ]
>>856の書いてるように、フィールドでは駄目だよ。
基本的には読み書き可能なプロパティを定義しないと。


860 名前:デフォルトの名無しさん [2009/06/09(火) 21:04:18 ]
プロパティを定義するならアクセサメソッドの実装を
ILGeneratorで生成しないといけないので超面倒だぜ

861 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:12:53 ]
まあぶっちゃけDataSetに読み込んでDataRowViewを使えばいいんじゃないかなw


862 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:15:02 ]
ここまでしてpropertygrid使う意味があるのだろうか

863 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:25:16 ]
自分で作ることと総合的に考えれば、圧倒的に楽になる可能性はあるよ。
DataTableに一行目とかに読み込んで、DataRowView(DefaultViewでもいい)を取り出して、
1行目をPropertyGridにバインドすれば簡単なことならできる。
これで事足りれば、新しいクラスを作ったりTypeDescripter絡みを自分で処理する必要はない。


864 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 21:30:30 ]
1行に1文字以上typoがあるはつは信用ならにゃい

865 名前:デフォルトの名無しさん [2009/06/09(火) 21:31:39 ]
CLR型やアセンブリを作り捨てしたらメモリリークするぞ

866 名前:デフォルトの名無しさん mailto:sage [2009/06/09(火) 22:34:41 ]
ちょっと教えてください。

ListViewのList表示で横スクロールするときになめらかにスクロール
させたいんだけど、どうすればいいんでしょうか。

エクスプローラみたいなスクロールじゃなくてFileVisorみたいなスク
ロールといえばイメージ伝わるかな。

ListBoxに無理矢理描画しようかとも思ったけど面倒だし、うまい方法
はないでしょうか。よろしくお願いします。


867 名前:デフォルトの名無しさん [2009/06/09(火) 22:37:22 ]
WPFに移行する

868 名前:デフォルトの名無しさん [2009/06/10(水) 07:38:42 ]
今勉強中なんですけど
カプセル化って隠すという意味ですよね?
デリゲートが何でカプセル化になるのか今一ピンとこないんですが



869 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:09:36 ]
>カプセル化って隠すという意味ですよね?
多分違う

870 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:19:23 ]
どのメソッドを呼び出すか?を隠してる

871 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:29:56 ]
隠してない

872 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 08:41:45 ]
ある意味隠してる

873 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:16:07 ]
アクセス制限として見ると隠してないが、
カプセル化として見れば隠してる

874 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 09:51:36 ]
>>868
雑だが
Commandパターン
クロージャ

875 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:27:40 ]
ヘジたん的にはデザイナでコントロールクリック一発、それそこに書けを実現するための部品の一つでしかないんだろうな。
複数のメソッドが登録できるあたり、発想は明らかにクロージャー等ではないし、今ではクロージャー化しつつあるけど

876 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 10:38:35 ]
小理屈よりも、まずやりたい事ありきというC#の考え方は嫌いじゃないです
IDEの支援を想定した文法とか、常識的にはこの文法冗長でだるいだろう普通やめるだろうというのが平気で入っている。

877 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 11:08:08 ]
カプセル化も大きなウェイトを占める概念の一つであって
それがすべてじゃないと思うよ。

878 名前:デフォルトの名無しさん [2009/06/10(水) 11:10:29 ]
オブジェクト指向的にはメソッド一つだけのインターフェイスと等価
パターンとしてよく必要になるんだけど>>876の言うように面倒だから言語に取り込んだ



879 名前:デフォルトの名無しさん [2009/06/10(水) 16:45:29 ]
非同期実行する場合に

new Thread
ThreadPool.QueueUserWorkItem
BackgroundWorker
delegate.BeginInvoke
…ほかにもある?

なんか色々あって混乱するけど、どういう場合にどれを使えばいいの?


880 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 16:49:47 ]
どうぞ
ttp://codezine.jp/article/detail/144?p=1

881 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:25:53 ]
>>880
ありがとう、でももうちっと最近の記事じゃないとBackgroundWorkerとか扱ってないかも

private void BackgroundStart()
{
Action act = () =>
{
while (true)
{
Thread.Sleep(50);
Console.WriteLine("にゃー!");
}
};
act.BeginInvoke(null, null);
}

static void Main(string[] args)
{
BackgroundStart();
while (true)
{
Thread.Sleep(50);
Console.WriteLine("わんわん!");
}
}

今はこんな感じで書いてるけど、可読性いいのかこれ?
BackgroundWorkerはいろいろリッチだけど、使うの難しそう。

882 名前:854 mailto:sage [2009/06/10(水) 17:31:56 ]
どうもありがとう filed ではなくて property をつくったら見事意図したとおりにできました!

最後にひとつ。
動的に作ったクラス、のインスタンスのプロパティに値を設定するには
どうすればよいですか?
もしくは、PropertyGird をプログラム側から操作して、PropertyGrid.SelectedObject
のプロパティを変更することはできますか?


883 名前:デフォルトの名無しさん [2009/06/10(水) 17:44:41 ]
リフレクションを使う
プロパティを生成できた奴がそんな質問をするなんて考えられないと思うんだが

884 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 17:48:08 ]
わざとだろ、自分で考えろ以上終了だな

885 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:30:56 ]
ボスケテー


AA作成支援ソフトっぽいもの作ってまして
標準環境(www.geocities.co.jp/HeartLand-Yurinoki/1836/mona_font_settei.html
で指定した文字列の表示幅を取得する方法を探してます

Graphics.MeasureStringや
TextRenderer.MeasureTextなんかを使えばいけるんだと思うんですが
どーにもIE標準環境の作り方がわかりません(Graphicsオブジェクトどーやってもってくるの?)

おせーてくださーい

886 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:37:54 ]
onpaintとかのじゃだめなのかな?

887 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 21:48:23 ]
普通にControl.CreateGraphicsでもいいしGetDCしたのからFromHdcでもいいし

888 名前:885 mailto:sage [2009/06/10(水) 22:50:23 ]
何が文字列の表示幅を決定している要因なのかよく理解していないものでして
てっきりGraphicsオブジェクトのプロパティに大きく依存するのかと思ったんですが
今メンバ見てもそれっぽいもの無いみたいですね。。


例えば下の二つの文字列

「ああああああ」
「..............................」

を長さ測定関数に渡した時に同一の値が帰ってくるような
状態をとりあえず目指していろいろやってるんですが
なかなかうまくいかないですね・・・

とりあえずもうちょっと調べてみますー



889 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:12:03 ]
フォントだよ

890 名前:デフォルトの名無しさん mailto:sage [2009/06/10(水) 23:33:33 ]
あー
なんとかできたっぽいです
同じフォントでも環境によって表示のされ方違うのかと思ってました

レスくれた方ありがとでしたー

891 名前:854 mailto:sage [2009/06/11(木) 00:54:54 ]
以下のようにしたらうまくいきました
リフレクターというヒントをくれたかた、どうもありがとう
Type type = (Type)MyClass;
type.GetProperty("x").SetValue(propertyGrid.SelectedObject, 1234, null);

いままでずっと C をやっていて C# も .Net おとといはじめたばかりなので、
ヒントがなければライブラリのどこに何があるかさっぱりわかりませんでした。
どうもありがとう!

892 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 01:01:32 ]
どういたしまして
お役に立てて光栄です

893 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:42:51 ]
質問者の笑顔のために

894 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:25:30 ]
>>881
> Action act = () =>

なんぞこれ

895 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 08:38:37 ]
lambda式でしょ。

896 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:05:26 ]
>>894
actという名前の変数はAction型
() => {...} はAction型のリテラル(ラムダ式)で,空の引数を受け取って何かしてる

897 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 17:52:31 ]
C#のAAはこれでおk?
(c_c#)

898 名前:デフォルトの名無しさん [2009/06/11(木) 22:31:35 ]
C#の式として有効なものしか認めない



899 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:56:39 ]
>>897
//(c_c#)

でOK

900 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 22:57:17 ]
"(c_c#)"






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

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

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