C♯, C#相談室 Part35
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2006/11/03(金) 03:07:45前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/
過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0893デフォルトの名無しさん
2006/12/06(水) 19:41:43IntegralHeight を false に
0894デフォルトの名無しさん
2006/12/06(水) 20:09:10行ごとに色を変える方法はDrawItemで作れたのですが
一列の中で何色も色を変える方法がわからないです
0895デフォルトの名無しさん
2006/12/06(水) 20:31:56ありがとうございました!できました!
0896デフォルトの名無しさん
2006/12/06(水) 20:39:48言いたいことがよく分からんが、オーナードローならどんな描画だってできるでしょ。
0897894
2006/12/06(水) 20:52:40e.Graphics.DrawString(文字列, フォント, 色, e.Bounds);
e.DrawFocusRectangle();
---
赤い青い黄色い
という文字列(実際に色がついているとして)をリストボックスの1列に表示したいんですが
ListBoxの要素ひとつの中で色を変更する方法を探してます
上のDrawString + DrawFocusRectangle だと一列ごとにひとつの文字列・一色しか設定できませんでした
わかりやすい説明が出来なくて申し訳ないです
0898デフォルトの名無しさん
2006/12/06(水) 20:55:23要は MeasureString だな
0899894
2006/12/06(水) 21:05:45苦肉の策で文字数*5と指定してX位置を横にずらして表示していたので
その部分を変えていけばできそうです
ありがとうございます
0900デフォルトの名無しさん
2006/12/06(水) 22:19:08そうならないようにインタフェースに責任を持たせる。
自然な発想で操作から連想される名前が重なる場合には衝突は気にしない。(どうせ、明示的実装できるし)
もちろん、時と場合による。
0901デフォルトの名無しさん
2006/12/06(水) 22:39:34そもそも視覚や聴覚も機能しないはず
0902デフォルトの名無しさん
2006/12/06(水) 22:55:450903デフォルトの名無しさん
2006/12/06(水) 23:14:54PictureBox.Imageが突然、nullになってしまうのですが、
何が原因なのでしょうか?
0904デフォルトの名無しさん
2006/12/06(水) 23:21:52何が投げてる例外だよ?
0905デフォルトの名無しさん
2006/12/06(水) 23:25:560906デフォルトの名無しさん
2006/12/06(水) 23:30:320907質問です。
2006/12/06(水) 23:32:58例えばDataTableに10行レコードが入っていたとして
一番最初(0レコード目)に””(空白)値のみのDataRowを
挿入したいのですが何か良い方法をご存知の方はいらっしゃいますか?
New DataRow ・・・ dt.Add
⇒この方法だと一番末尾にレコードが追加されてしまいます。
0908デフォルトの名無しさん
2006/12/06(水) 23:34:52indexにかかわらずIsEmptyがTrueのPoint(X=0,Y=0)が帰ってきます。
何がいけないのでしょう?
0909903
2006/12/06(水) 23:37:28原因が分かった orz...
try{...}
catch(...){return;}
PictureBox.Image = new ...;
0910デフォルトの名無しさん
2006/12/06(水) 23:38:33おもろいやんけw
0911デフォルトの名無しさん
2006/12/06(水) 23:43:18もうちょっとメソッド調べれ 挿入を英語で
0912デフォルトの名無しさん
2006/12/06(水) 23:46:01indexは0以上かつText.Length未満でなければならない。
0913デフォルトの名無しさん
2006/12/06(水) 23:54:18はい、その点は大丈夫です。
txtBox.GetPositionFromCharIndex(txtBox.SelectionStart);
とやっているのにそうなるのです…(T-T)
0914デフォルトの名無しさん
2006/12/07(木) 00:05:32ブレークポイント張ってSelectionStartの値は見てみたのか?
0915デフォルトの名無しさん
2006/12/07(木) 00:07:390916907
2006/12/07(木) 00:12:33DataTable.Insertでしょうか?
このメソッドは挿入箇所をインデックスで指定する事も
出来るのでしょうか?
0917デフォルトの名無しさん
2006/12/07(木) 00:21:000918907
2006/12/07(木) 00:24:00>>917
調べても使い方が分かりません。
0919デフォルトの名無しさん
2006/12/07(木) 00:36:36Add は別のクラスのだろ? それ調べれ
0920デフォルトの名無しさん
2006/12/07(木) 00:43:07そんな姿勢ならプログラミングやめた方がいいよ
少なくともこのスレには来ないでくれ
0921デフォルトの名無しさん
2006/12/07(木) 00:59:35プログラミングというのは、正にそういうことの地道な繰り返しなわけだが。
その作業が嫌なら、プログラミングには向いてないな。
0922907
2006/12/07(木) 01:06:17実際プロだしね。
0923デフォルトの名無しさん
2006/12/07(木) 01:09:190924デフォルトの名無しさん
2006/12/07(木) 01:09:31名前全角にしないとそれっぽく見えないよ
0925デフォルトの名無しさん
2006/12/07(木) 01:12:43それで教えて貰って分からないってのも。
0926デフォルトの名無しさん
2006/12/07(木) 01:16:300927デフォルトの名無しさん
2006/12/07(木) 09:52:41コレクション内の指定した位置に新しい行を挿入します。
名前空間: System.Data
アセンブリ: System.Data (system.data.dll 内)
構文
C#
public void InsertAt (
DataRow row,
int pos
)
パラメータ
row
追加する DataRow。
pos
DataRow を追加するコレクション内の位置。
解説
InsertAt で指定する位置は、DataRowCollection での行の順序だけを表しています。
DataRow 配列で複数の行が返される場合は、挿入行が InsertAt で指定した位置に返されないことがあります。
たとえば、Rows プロパティは指定した挿入位置に行を返しますが、Select と GetChildRows は挿入位置に行を返しません。
DataRowCollection の内容を XML (WriteXml など) で作成すると、行は DataRowCollection で指定された順序に従って書き込まれます。
pos パラメータで指定した値がこのコレクション内の行数を超えている場合は、新しい行はコレクションの末尾に追加されます。
0928デフォルトの名無しさん
2006/12/07(木) 10:25:47TEST_DLLという名前空間にTEST_CLASSというpublic クラスをつくりました。
これは、DLLとしてビルドされます。
それで、上記のDLL内のクラスを参照して、うごくEXEファイルを別につくっているのですが、
以下のようにするとDLLのクラスを呼べるのは確認しました。
TEST_DLL.TEST_CLASS test = new TEST_DLL.TEST_CLASS();
ただ、上記のDLLを削除して起動すると例外(System.IO.FileNotFoundException)が発生して
おちてしまいます。DLLがあれば、問題なく動きます。
そら、DLLがないのだから当然の例外なのですが、インスタンスを作成する前に、
DLLがあるかどうかのチェックをする処理を入れて、
あれば、インスタンス生成にしても、例外が発生します。
インスタンス生成を削除すると動くので、インスタンス生成が問題であるのは確認しました。
また、上記インスタンス生成時に(System.IO.FileNotFoundException)を
catchにしてもキャッチされません。
Visual Studioのデバッグで起動しても、どこで例外がおこってるかも表示されません。
どうしたら、いいのでしょうか?ご教授頂けませんか?おねがい致します。
0929928
2006/12/07(木) 10:59:08ごめんなさい。自己解決しました。
インスタンスの生成に失敗すると自動的に例外が上位にあがるんですね…。
たぶんで、自信ないけど…。
インスタンス生成部分をメソッド化して、呼び出し元でキャッチしたらできました。
メソッド化した時に例外が発生したら上位にあげるとかもかかなくても、勝手に上位に上ったので、
たぶん、そうなのかなあと思いましたが…。
0930デフォルトの名無しさん
2006/12/07(木) 11:00:24Exceptionならキャッチできる?
0931928
2006/12/07(木) 11:14:27System.Exceptionでもキャッチできなかったから、ほんきで悩んだんだ。
そんなはずないだろ?って。
メソッド化しても、メソッド内ではキャッチできなくて、呼び出し元ではキャッチできた…。
よくわからんが…。
0932デフォルトの名無しさん
2006/12/07(木) 12:04:29実際の実行より前に型情報が必要になるのね
つまり、そのコードを含むメソッドのJITコンパイル時ね
先にJITコンパイル済まさないと実行出来ないからね
てことは、そのメソッドの実行よりも前に型のロードが必要になるのね
もう分かるね?
0933デフォルトの名無しさん
2006/12/07(木) 12:09:390934デフォルトの名無しさん
2006/12/07(木) 12:15:49日本語でおk
0935デフォルトの名無しさん
2006/12/07(木) 12:19:38あるかどうか分からんライブラリをアーリーバインドする馬鹿がいるかよ。
Reflection使っとけ。
0936デフォルトの名無しさん
2006/12/07(木) 12:32:26namespace ConsoleApplication1
{
class Program
{
static private void doSomething()
{
new ClassLibrary1.Class1().DoSomethong();
}
static void Main(String[] args)
{
if (File.Exists("ClassLibrary1.dll"))
{
doSomething();
}
}
}
}
汚いからやめて欲しいが。
0937デフォルトの名無しさん
2006/12/07(木) 13:54:560938デフォルトの名無しさん
2006/12/07(木) 14:09:180939デフォルトの名無しさん
2006/12/07(木) 14:14:19使えるから自分で実装汁
0940デフォルトの名無しさん
2006/12/07(木) 14:15:25なる奴はなる。ならん奴はならん。
そういう質問をするタイプの奴はならん。
0941デフォルトの名無しさん
2006/12/07(木) 14:16:36じゃあやめとくか
0942デフォルトの名無しさん
2006/12/07(木) 17:59:47固定幅を文字数でなくバイト数で設定することは可能なのでしょうか?
何がしたいかというと・・・(アスタリスクは空白文字とお考え下さい)
1.String.Format("{0, -6}", 1) -> “11****”
2.String.Format("{0, -6}", "あい") -> “あい****”
上記の2の結果“あい****”を、“あい**”で取得したいのです。
0943デフォルトの名無しさん
2006/12/07(木) 18:05:43"1" と "あ" はどちらも2バイト。
0944デフォルトの名無しさん
2006/12/07(木) 18:17:42Encoding.GetEncoding(name).GetByteCount(s)
で目的のエンコーディングでのバイト長を取得して、
足りない分を空白を埋めればいいんじゃね?
0945デフォルトの名無しさん
2006/12/07(木) 18:27:07・・・根本的に思い違いをしていたのですねorz
GetByteCountで取得してみます。即レスありがとうございました。
0946デフォルトの名無しさん
2006/12/07(木) 21:05:16wsdl.exeで作成したプロキシクラス(呼び出し元はjavaで作成したwebサービス)
をコンソールアプリケーションのプロジェクトに追加してビルドすると
プロキシクラスの先頭で
using System.Web.Services;
using System.Web.Services.Protocols;
と宣言している部分で
「型または名前空間名 'Services' は名前空間 'System.Web' に存在しません。アセンブリ参照が不足しています」
というエラーが出ます。
どのようにすればビルドが成功するかわかりません。
助けて下さい。
0947デフォルトの名無しさん
2006/12/07(木) 21:19:03アセンブリ参照が不足しています
0948デフォルトの名無しさん
2006/12/07(木) 21:31:21public abstract class AbstractClass{
public abstract int Value{get;}
}
public class ConcleteClass{
public override int Value{get{return 0;} set{ }}
}
のようにサブクラスではGetter/Setter両方を定義する方法ってありませんか?
プロパティに対してoverrideキーワードを追加すると以下のようなコンパイルエラーになるのですが
「オーバーライド可能な set アクセサがないため、オーバーライドできません。」
0949デフォルトの名無しさん
2006/12/07(木) 21:39:29SetValue メソッドでも用意してやれ
0950デフォルトの名無しさん
2006/12/07(木) 21:43:35ありがとう。
0951デフォルトの名無しさん
2006/12/07(木) 21:50:15public abstract int Value{get;}
}
internal class MiddleClass : AbstractClass{
public override int Value{get{return 0;}}
}
public class ConcleteClass : Class{
public new int Value{get{return base.Value;} set{ }}
}
こうするとか
0952デフォルトの名無しさん
2006/12/07(木) 21:55:05ConcleteClass : MiddleClassね
あと、internalにはできないな
0953デフォルトの名無しさん
2006/12/07(木) 22:44:400954デフォルトの名無しさん
2006/12/07(木) 23:37:040955デフォルトの名無しさん
2006/12/07(木) 23:43:220956デフォルトの名無しさん
2006/12/07(木) 23:55:560957デフォルトの名無しさん
2006/12/08(金) 00:00:210958デフォルトの名無しさん
2006/12/08(金) 00:08:070959928
2006/12/08(金) 00:08:31Reflection使って、作りなおしました。
でも、複数アプリに共通なクラスはDLL化したらしたで、
Reflectionつかわないとってなるとめんどいな…。
0960デフォルトの名無しさん
2006/12/08(金) 00:10:180961デフォルトの名無しさん
2006/12/08(金) 00:16:410962デフォルトの名無しさん
2006/12/08(金) 00:22:17お前の頭についている二つの穴はフシアナか?
0963デフォルトの名無しさん
2006/12/08(金) 00:23:590964デフォルトの名無しさん
2006/12/08(金) 00:34:200965デフォルトの名無しさん
2006/12/08(金) 00:35:100966デフォルトの名無しさん
2006/12/08(金) 00:36:440967デフォルトの名無しさん
2006/12/08(金) 00:40:17メソッド用意しました。
0968デフォルトの名無しさん
2006/12/08(金) 00:43:16これは自分じゃないです
見てきます
0969デフォルトの名無しさん
2006/12/08(金) 00:59:38ごめんお…
0970デフォルトの名無しさん
2006/12/08(金) 01:10:15いったい何がしたいわけ?
dllがなくても正常に動かしたいの?
普通dllがなきゃ動かないのは当たり前でそ
0971デフォルトの名無しさん
2006/12/08(金) 02:34:06いや、エラー処理なんだな。
DLLがなきゃ動かないのは当然なのはわかってるんだ。
もし、DLLがない場合&DLLが古い&DLLが名前は同じでも別もの
の場合でもちゃんとエラーをだして止まるようにしたかったんだ。
例外が発生しておちましたでは困るんで。
一般のユーザは、こっちが思ってるように、正しく使ってくれないから…。
0972デフォルトの名無しさん
2006/12/08(金) 03:10:350973デフォルトの名無しさん
2006/12/08(金) 06:04:033行くらい書くだけじゃないの?
0974デフォルトの名無しさん
2006/12/08(金) 06:50:230975デフォルトの名無しさん
2006/12/08(金) 08:25:070976デフォルトの名無しさん
2006/12/08(金) 09:56:01XmlSerializer.Serializeを使ったら冷害が出ました。
どうすればいいんでしょうか?
0977デフォルトの名無しさん
2006/12/08(金) 10:15:510978デフォルトの名無しさん
2006/12/08(金) 13:50:320979デフォルトの名無しさん
2006/12/08(金) 18:17:13http://www.codeproject.com/cs/miscctrl/dockingmanagerextender.asp
デバッグに失敗するですけどどうすればいいんでしょうか?
VS2005です。
0980デフォルトの名無しさん
2006/12/08(金) 19:04:36Magic Libraryっていう有償のコンポーネントが必要
0981デフォルトの名無しさん
2006/12/08(金) 20:07:39http://www.codeproject.com/cs/miscctrl/magicdocking.asp
フリーバージョンがあってそれを使ってます。
参考サイト
http://dobon.net/vb/dotnet/links/dockingwindow.html
0982デフォルトの名無しさん
2006/12/08(金) 22:05:55詳しく書かないってことは答えて欲しくないってことでおk?
0983デフォルトの名無しさん
2006/12/09(土) 01:58:02またまた、出没しましたよ…。
下のソースの 1 のClassLibrary.MyClassがDLL内にある。
それで、そのDLLがないともちろんエラーとなるんだが、例外が 2 じゃなくて 3 でキャッチ
されるのがなぜなのか理解できない。普通 2 じゃないの?
ここでthrowしてないのに…。なぜ3にいくの…
static void DLL_Class_Test()
{
try
{
ClassLibrary.MyClass test = new ClassLibrary.MyClass(); // ←ここ 1
}
catch (System.Exception ex) // ←ここ 2
{
Console.WriteLine(ex);
}
}
static void Main(string[] args)
{
try
{
DLL_Class_Test();
}
catch (System.Exception ex) // ←ここ 3
{
Console.WriteLine(ex);
}
}
0984デフォルトの名無しさん
2006/12/09(土) 02:26:22>>932読んでも分かんないの?
0985デフォルトの名無しさん
2006/12/09(土) 03:29:17エラーになるのはなぜかっていうのはわかるけど、
例外の発生場所がなぜそうなるのかわからないよ…。
型情報がないから、そのメソッド自体を初期化できないってこと?
飲み込み悪くてすまねぇ。
0987デフォルトの名無しさん
2006/12/09(土) 10:32:02そのメソッドを実行開始する前に、型がロードされる。JITコンパイルしようとして。
これでなんで分からないんだ?
初めてDLL_Class_Testが呼び出される時点、つまりDLL_Class_Test();の部分を実行箇所に来ると、
この時点でDLL_Class_TestのJITコンパイルが開始され、
まだロードされてないClassLibrary.MyClassが必要と認識され、
自動的にロードが試みられる。
↓
ふぁいるが見つかんないから例外
↓
DLL_Class_Testメソッド内の
ClassLibrary.MyClass test = new ClassLibrary.MyClass();ではなく、
MainのDLL_Class_Test();
の実行箇所で例外となる。
0988デフォルトの名無しさん
2006/12/09(土) 11:30:390989デフォルトの名無しさん
2006/12/09(土) 15:32:10なにかのcontrol.Image プロパティに直接指定したときは綺麗なんですが、
一度ImageListに格納してしまうと(ColorDepth を32bitにしています)
微妙にアルファがつぶれてくれます。
iconでも確認しました。
回避法はありませんか〜?
0990デフォルトの名無しさん
2006/12/09(土) 15:45:510991デフォルトの名無しさん
2006/12/09(土) 15:51:390992デフォルトの名無しさん
2006/12/09(土) 16:02:51レス数が950を超えています。1000を超えると書き込みができなくなります。