トップページ⇒tech
1001コメント308KB

C♯, C#相談室 Part35

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2006/11/03(金) 03:07:45
(#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。

前スレ
C♯, C#相談室 Part34
http://pc8.2ch.net/test/read.cgi/tech/1157549657/

過去スレは>>2-5あたり。
※スレタイに「#」を入れても消えちゃうので新スレ立てる人は要注意だ。
0830デフォルトの名無しさん2006/12/03(日) 18:46:02
>>829
当然MSDNぐらいは検索したんだろうな?
0831デフォルトの名無しさん2006/12/03(日) 20:03:31
>>830
すいません、MSDNってなんですか?
0832デフォルトの名無しさん2006/12/03(日) 20:10:48
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
>すいません、MSDNってなんですか?
0833デフォルトの名無しさん2006/12/03(日) 20:13:27
( ゚д゚) ポカーン
0834デフォルトの名無しさん2006/12/03(日) 20:16:57
MSDN知らずにどうやって開発するんだろ?
0835デフォルトの名無しさん2006/12/03(日) 20:25:36
VSのヘルプで検索でおk
0836デフォルトの名無しさん2006/12/03(日) 20:35:51
VSとは一体…
すみません初心者なので略されると学習できません
おはずかしいのですが
0837デフォルトの名無しさん2006/12/03(日) 20:37:57
ぽまえら釣られ杉
0838デフォルトの名無しさん2006/12/03(日) 20:46:54
MasterSystemDominantNormalization

Virtuoso Sound
0839デフォルトの名無しさん2006/12/03(日) 20:56:42
VSはVirtual Sexだろ
0840デフォルトの名無しさん2006/12/03(日) 20:57:20
Visual Studio
0841デフォルトの名無しさん2006/12/03(日) 21:19:25
>>836
飽きたのでマジレス。まず、ここは初心者スレ(ふらっとスレ)ではないです。
ましてや「C#初心者」よりもっと前の段階の人なんて初心者スレでもお断りです

入門書でも買ってそこからはじめてください。
0842デフォルトの名無しさん2006/12/03(日) 21:25:01
MSDN以前にGoogleは知ってるよな、まさか
0843デフォルトの名無しさん2006/12/03(日) 22:57:24
ここは何だかんだで初心者に優しいスレですね。
0844デフォルトの名無しさん2006/12/03(日) 23:02:01
>>842
検索はYahooで行っています。
なにか、問題ありますか?
0845デフォルトの名無しさん2006/12/03(日) 23:04:56
>>844
問題ないから他所に池
0846デフォルトの名無しさん2006/12/04(月) 00:31:38
ストアドプロシージャの出力パラメータ(@ErrCode)を
変数に格納する作業をしたいのですがエラーが発生します。

string ErrCode = "";
"DECLARE @ErrCode exec [STP_SelectKoshinSiire] @ErrCode OUTPUT SET @ErrCode = " + ErrCode;

どこか間違っていますでしょうか?
0847デフォルトの名無しさん2006/12/04(月) 00:39:14
>846
基本がナットラン・・・
0848デフォルトの名無しさん2006/12/04(月) 00:44:10
このスレでは代入式まで教えなくちゃいけないの?
たぶんコンパイラも呆れてるよ?

x = y;
右辺yを左辺xに代入
0849デフォルトの名無しさん2006/12/04(月) 01:02:12
DECLARE @ErrCode INT exec [STP_SelectKoshinSiire] @ErrCode OUTPUT SET " + ErrCode + " = @ErrCode
エラーメッセージ
=付近に不適切な構文があります。

となってしまいます。
0850デフォルトの名無しさん2006/12/04(月) 01:06:21
>>812
Visual Studio 2005のスレがあるから、次からはそちらへ。
08518472006/12/04(月) 01:06:23
>>849
不適切な構文があるんです
0852デフォルトの名無しさん2006/12/04(月) 01:25:16
>>851
いえ自分の見る限りですがそんな構文あり得ないです
0853デフォルトの名無しさん2006/12/04(月) 02:00:49
>>852
おまいは C# が使いたいのか C# に似たオリジナル脳内言語が
使いたいのかどっちなんだ?
前者ならコンパイラのほうがまず正しい。後者なら C# のコンパイラは
使えない。
08548512006/12/04(月) 02:20:57
>>853 正解
0855デフォルトの名無しさん2006/12/04(月) 08:29:52
おまえら・・・少しはスルー汁よ
0856デフォルトの名無しさん2006/12/04(月) 08:48:50
BAC#言語
0857デフォルトの名無しさん2006/12/04(月) 09:51:26
例え釣りっぽいと思っても、ホンモノだと仮定したうえで
全力をもって食い付くのが俺のジャスティス。
0858デフォルトの名無しさん2006/12/04(月) 09:59:53
うむ。ウサギはライオンを倒すにも全力を尽くすというしな。
がんばれ。
0859デフォルトの名無しさん2006/12/04(月) 11:43:31
最近のライオンはスルー力を鍛えてるらしい
08604052006/12/04(月) 12:20:46
>>857 は VIP 的発想だとおもた。
0861デフォルトの名無しさん2006/12/04(月) 21:21:52
秀和システムの本だけで開発しています
0862デフォルトの名無しさん2006/12/04(月) 21:22:54
MSDN+秀和?
0863デフォルトの名無しさん2006/12/05(火) 16:50:07
RichTextBoxについて質問があります。
FontプロパティをMS ゴシック, 9ptにしているのですが、Textプロパティに文字列をセットしたときと
RichTextBoxに直接入力したときでフォントが変わってしまいます。

なぜだかご存知の方はおられますか?
0864デフォルトの名無しさん2006/12/05(火) 17:24:14
半角文字のフォントがArialになるバグのことか?
0865デフォルトの名無しさん2006/12/05(火) 17:25:18
あ、バグなんですか?
0866デフォルトの名無しさん2006/12/05(火) 18:56:08
諸事情よりメニューを作らずにツールバーだけが存在するアプリを開発中なのですが
メニューなしでショートカット(Ctrl+Oで開くなど)を実現する方法はありますか?
0867デフォルトの名無しさん2006/12/05(火) 19:05:12
KeyPreview=trueにしといてFormのイベントに引っ掛ければいいんじゃね?
0868デフォルトの名無しさん2006/12/05(火) 19:13:07
>>865
アジア言語圏特有の仕様。
この機能を抑制するにはWin32ではEM_SETLANGOPTIONSメッセージでIMF_AUTOFONTをクリアする。
.NETでもP/Invokeを使わない方法が何かあったと思ったが出てこないな。
08698662006/12/05(火) 19:43:54
>>867
できました。ありがとうございます。
0870デフォルトの名無しさん2006/12/05(火) 20:31:12
>>863の問題は過去スレで、.NET Framework 2.0以降なら何かのプロパティをいじるだけで直せる解決法が出た。
ログ紛失してしまったorz
0871デフォルトの名無しさん2006/12/05(火) 20:43:53
>>870
これ?

uint opt = (uint) richTextBox1.LanguageOption;
opt &= ~((uint)RichTextBoxLanguageOptions.DualFont);
richTextBox1.LanguageOption = (RichTextBoxLanguageOptions) opt;
0872デフォルトの名無しさん2006/12/05(火) 21:52:29
>>871
おおおおおおおおおおおおおおおおおおおおおおお
ありがとうございます!!!
08738712006/12/05(火) 22:06:35
自分で貼っといて何だが

richTextBox1.LanguageOption &= ~RichTextBoxLanguageOptions.DualFont;

でいいな。
0874デフォルトの名無しさん2006/12/05(火) 22:29:33
>>873
enumを直接演算に使うと警告かエラーが出た気がする。それでuintにキャストしているはず。
0875デフォルトの名無しさん2006/12/05(火) 22:36:41
普通にやってるぜ?
0876デフォルトの名無しさん2006/12/05(火) 22:43:18
>>874
別に問題ないよ。

今回は大丈夫だけど、enumを32ビットと仮定しているところのが怖い。
0877デフォルトの名無しさん2006/12/05(火) 23:45:06
enum型で出来ないのは算術演算でビット単位の論理演算は出来た。思い込みをやっちまってたかorz
0878デフォルトの名無しさん2006/12/06(水) 12:12:37
unionが見つからない
0879デフォルトの名無しさん2006/12/06(水) 12:29:44
IDEを使ってDataSetとDataGridViewをそのままバインドしています。
ここで現在表示されているUnix Epochからの経過秒数を、普通の日付に直したいと思います。

これは非バインドされた列を新たに追加して、バインドされた列を元にデータを作らないといけないのでしょうか。
それとも、バインドされた列に「そのように見えるフィルタ」のようなものをほどこしてやる事は可能でしょうか?
方針を教えていただければ幸いです。
0880デフォルトの名無しさん2006/12/06(水) 12:43:39
>>879
普通SQLの段階で直す。DataSetはあくまでコンテナ。クエリエンジン
ではない。
0881デフォルトの名無しさん2006/12/06(水) 12:50:35
>>880
そうなんですけど。レコード件数が多いのでサーバ負荷がすこしでも減ればと思って。
あまり意味はないのでしょうか。
0882デフォルトの名無しさん2006/12/06(水) 14:33:33
>>878
FieldOffset

ところでVARIANTARGには死んでもらっていいですか?
0883デフォルトの名無しさん2006/12/06(水) 15:29:29
バリアントあるだろ
0884デフォルトの名無しさん2006/12/06(水) 15:32:58
110cm単装リニアカノン:バリアントMk.8
アークエンジェル副砲。艦尾両舷に1基ずつ装備されているリニアガン。連射能力も高く精密射撃が可能だが、長時間連続使用すると砲身温度が上昇して使用出来なくなるのが欠点。
右舷が1番、左舷が2番である。ゴットフリートと違って側面に配置されているために上下方向の旋回が可能であるため、地表や海面を空中から直接狙撃することも可能である。
また、潜水航行が可能である本艦にとって数少ない水中での攻撃が可能な兵器である。
「DESTINY」最終話では、これによりミネルバの武装を破壊、戦闘不能に追い込んだ。
0885デフォルトの名無しさん2006/12/06(水) 15:41:43
キチガイは放置で。
0886デフォルトの名無しさん2006/12/06(水) 17:04:03
どなたかinvalidaterectの使い方を教えてください。
普通にinvalidate()するよりも軽くなるんでしょうか?
[DllImport("user32.dll")]
private static extern IntPtr GetDC(IntPtr hwnd);
[DllImport("user32.dll")]
private static extern bool InvalidateRect(
IntPtr hWnd,
ref Rectangle r,
bool bErase
);
private void button2_Click(object sender, EventArgs e)
{
Graphics gra = pictureBox1.CreateGraphics();
IntPtr hwnd = gra.GetHdc();
Rectangle rect = new Rectangle(100,100,100,100);
InvalidateRect(hwnd, rect, false);
}
調べたんですがこの程度しか分かりませんでした。あってるのかも分からないです
0887デフォルトの名無しさん2006/12/06(水) 17:17:38
Invalidate(Rectangle) でいいだろ
0888デフォルトの名無しさん2006/12/06(水) 17:42:12
おまいらインタフェースに同じような名称のメソッドつけたくなる時どうしてますか?
メソッド名にインタフェースを表すようなプレフィックスつけてる?
それとも衝突覚悟で同じ名前つける漢ですか?
0889デフォルトの名無しさん2006/12/06(水) 17:46:12
>>886
InvalidateRectが引数にとるのはRECT構造体へのポインタ。
マネージドのRectangleではない。メンバの意味が違う。MSDNで探せ。

GetHdcしたらReleaseHdcする。
CreateGraphicsしたらDisposeする。

あと細かいけど

>IntPtr hwnd = gra.GetHdc();

hwndはHWND型
hDCはHDC型
マネージドだとどっちもIntPtrで型はあってるけど
ふつうそういうときにhwndは使わない


つーか>>887でFA
08908892006/12/06(水) 17:54:02
あっー
よく考えたらデバイスコンテキスト取得する必要ないじゃんorz
InvalidateRectの第一引数はウインドウハンドルっす。

どうしてもInvalidateRectしたいなら
struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}
で
RECT rct = new RECT();
//ここでrctのメンバ入れる。rightとbottomにちゅうい
InvalidateRect( pictureBox1.Handle, ref rct, false );
08918862006/12/06(水) 18:34:56
みんなありがとう。
教えてもらったとおりがんばってみます。
0892デフォルトの名無しさん2006/12/06(水) 19:32:32
FormのタイトルバーをFormBorderStyleをNoneにすることで消し、
そこにリストボックスを配置、DockをFillにしました。

が、表示させるとなぜか下のほうにFormがはみ出ます。
(グレーの背景が見える)
なぜなんでしょう?
0893デフォルトの名無しさん2006/12/06(水) 19:41:43
>>892
IntegralHeight を false に
0894デフォルトの名無しさん2006/12/06(水) 20:09:10
ListBoxに追加するアイテムの色分けする方法を教えてください

行ごとに色を変える方法はDrawItemで作れたのですが
一列の中で何色も色を変える方法がわからないです
0895デフォルトの名無しさん2006/12/06(水) 20:31:56
>>893
ありがとうございました!できました!
0896デフォルトの名無しさん2006/12/06(水) 20:39:48
>>894
言いたいことがよく分からんが、オーナードローならどんな描画だってできるでしょ。
08978942006/12/06(水) 20:52:40
一行丸々色を変更する方法は、こんな感じで出来ました
e.Graphics.DrawString(文字列, フォント, 色, e.Bounds);
e.DrawFocusRectangle();
---
赤い青い黄色い
という文字列(実際に色がついているとして)をリストボックスの1列に表示したいんですが
ListBoxの要素ひとつの中で色を変更する方法を探してます
上のDrawString + DrawFocusRectangle だと一列ごとにひとつの文字列・一色しか設定できませんでした

わかりやすい説明が出来なくて申し訳ないです
0898デフォルトの名無しさん2006/12/06(水) 20:55:23
DrawString を複数回呼び出せばいいだろ
要は MeasureString だな
08998942006/12/06(水) 21:05:45
MeasureStringの知識がなかったので助かりました
苦肉の策で文字数*5と指定してX位置を横にずらして表示していたので
その部分を変えていけばできそうです
ありがとうございます
0900デフォルトの名無しさん2006/12/06(水) 22:19:08
>>888
そうならないようにインタフェースに責任を持たせる。
自然な発想で操作から連想される名前が重なる場合には衝突は気にしない。(どうせ、明示的実装できるし)
もちろん、時と場合による。
0901デフォルトの名無しさん2006/12/06(水) 22:39:34
そもそも幽霊だからこの世の物質に干渉できないって言うなら
そもそも視覚や聴覚も機能しないはず
0902デフォルトの名無しさん2006/12/06(水) 22:55:45
視覚や聴覚を認識する自意識はこの世の物にはあらず
0903デフォルトの名無しさん2006/12/06(水) 23:14:54
例外が発生してそれをキャッチした場合に
PictureBox.Imageが突然、nullになってしまうのですが、
何が原因なのでしょうか?

0904デフォルトの名無しさん2006/12/06(水) 23:21:52
>>903
何が投げてる例外だよ?
0905デフォルトの名無しさん2006/12/06(水) 23:25:56
>903が自力で調べるのを投げてるように見えるが…。
0906デフォルトの名無しさん2006/12/06(水) 23:30:32
誰がうまいこと言えと
0907質問です。2006/12/06(水) 23:32:58
DataTableに関する質問です。

例えばDataTableに10行レコードが入っていたとして
一番最初(0レコード目)に””(空白)値のみのDataRowを
挿入したいのですが何か良い方法をご存知の方はいらっしゃいますか?

New DataRow ・・・ dt.Add
⇒この方法だと一番末尾にレコードが追加されてしまいます。
0908デフォルトの名無しさん2006/12/06(水) 23:34:52
TextBoxのGetPositionFromCharIndex(int index)を呼び出すと
indexにかかわらずIsEmptyがTrueのPoint(X=0,Y=0)が帰ってきます。

何がいけないのでしょう?
09099032006/12/06(水) 23:37:28
スマヌ。
原因が分かった orz...

try{...}
catch(...){return;}
PictureBox.Image = new ...;
0910デフォルトの名無しさん2006/12/06(水) 23:38:33
>>909
おもろいやんけw
0911デフォルトの名無しさん2006/12/06(水) 23:43:18
>>907
もうちょっとメソッド調べれ 挿入を英語で
0912デフォルトの名無しさん2006/12/06(水) 23:46:01
>>908
indexは0以上かつText.Length未満でなければならない。
0913デフォルトの名無しさん2006/12/06(水) 23:54:18
>>912
はい、その点は大丈夫です。
txtBox.GetPositionFromCharIndex(txtBox.SelectionStart);
とやっているのにそうなるのです…(T-T)
0914デフォルトの名無しさん2006/12/07(木) 00:05:32
>>913
ブレークポイント張ってSelectionStartの値は見てみたのか?
0915デフォルトの名無しさん2006/12/07(木) 00:07:39
fuck?
09169072006/12/07(木) 00:12:33
>>911

DataTable.Insertでしょうか?

このメソッドは挿入箇所をインデックスで指定する事も
出来るのでしょうか?
0917デフォルトの名無しさん2006/12/07(木) 00:21:00
なぜ調べない?
09189072006/12/07(木) 00:24:00

>>917
調べても使い方が分かりません。
0919デフォルトの名無しさん2006/12/07(木) 00:36:36
つか DataTable には Insert 以前に Add が無いはずだが
Add は別のクラスのだろ? それ調べれ
0920デフォルトの名無しさん2006/12/07(木) 00:43:07
>>918
そんな姿勢ならプログラミングやめた方がいいよ
少なくともこのスレには来ないでくれ
0921デフォルトの名無しさん2006/12/07(木) 00:59:35
>>918
プログラミングというのは、正にそういうことの地道な繰り返しなわけだが。
その作業が嫌なら、プログラミングには向いてないな。
09229072006/12/07(木) 01:06:17
いや、向いてるよ。

実際プロだしね。
0923デフォルトの名無しさん2006/12/07(木) 01:09:19
プロに勝った!
0924デフォルトの名無しさん2006/12/07(木) 01:09:31
>>922
名前全角にしないとそれっぽく見えないよ
0925デフォルトの名無しさん2006/12/07(木) 01:12:43
プロが2ちゃんで質問かよw
それで教えて貰って分からないってのも。
0926デフォルトの名無しさん2006/12/07(木) 01:16:30
http://www.amazon.co.jp/exec/obidos/ASIN/4759222197/kimagureeigan-22/ref=nosim/
0927デフォルトの名無しさん2006/12/07(木) 09:52:41
DataRowCollection.InsertAt メソッド

コレクション内の指定した位置に新しい行を挿入します。

名前空間: 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:47
下記で、悩んでいます、たすけてください。

TEST_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のデバッグで起動しても、どこで例外がおこってるかも表示されません。

どうしたら、いいのでしょうか?ご教授頂けませんか?おねがい致します。
09299282006/12/07(木) 10:59:08
>>928
ごめんなさい。自己解決しました。
インスタンスの生成に失敗すると自動的に例外が上位にあがるんですね…。
たぶんで、自信ないけど…。
インスタンス生成部分をメソッド化して、呼び出し元でキャッチしたらできました。
メソッド化した時に例外が発生したら上位にあげるとかもかかなくても、勝手に上位に上ったので、
たぶん、そうなのかなあと思いましたが…。
レス数が900を超えています。1000を超えると表示できなくなるよ。