ふらっとC#, C♯, C#(初心者用) Part15
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/04/12(木) 23:14:25「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
前スレ: ふらっとC♯, C#(初心者用) Part14
http://pc11.2ch.net/test/read.cgi/tech/1172662746/
0002デフォルトの名無しさん
2007/04/12(木) 23:15:31http://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
0003デフォルトの名無しさん
2007/04/12(木) 23:16:10http://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
---
MSDNライブラリ 2006年6月版
http://www.microsoft.com/downloads/details.aspx?FamilyID=373930cb-a3d7-4ea5-b421-dd6818dc7c41&DisplayLang=ja
MSDNをローカルで見れる。
0004デフォルトの名無しさん
2007/04/13(金) 03:14:270005デフォルトの名無しさん
2007/04/13(金) 03:17:20第1回 初めてのVisual Studio 2005
↑
ハローワールドなボクですがこれくらいはできました。
0006デフォルトの名無しさん
2007/04/13(金) 17:37:16よくあるタブブラウザです。
タブを選択したとき、WebBrowserがマウスウィールで動くようにしたいん
ですが、どうしたらいいでしょうか?
SelectedイベントでWebBrowserにFocus()してもうまくいきません。
お願いします。
0007デフォルトの名無しさん
2007/04/13(金) 23:07:21MFCのCListCtrl::SetItemCountのように、リストにあらかじめ
アイテム数を設定しておくようなメソッドは無いのですか?
0008デフォルトの名無しさん
2007/04/14(土) 02:45:53それでどうなるのか知らんが、空文字列の ListViewItem でも突っ込んどけばいいんじゃね
0009デフォルトの名無しさん
2007/04/14(土) 11:19:51本格的にやるなら仮想リストを使うべきだが
そうしなくても
大量にアイテムを挿入するときに速くなる。
0010デフォルトの名無しさん
2007/04/14(土) 11:48:32普通に考えて早くなる理由がないと思うんだが。。
SetItemCountでググってみてもそのように書いてあるところが見つかるし。
0011デフォルトの名無しさん
2007/04/14(土) 17:56:180012デフォルトの名無しさん
2007/04/14(土) 19:34:001000件まとめて設定するのは速いんだよ
いやまじで
0013デフォルトの名無しさん
2007/04/14(土) 21:20:13中断中のスレッドを終了させる場合、どんな手段が適切でしょうか
0014デフォルトの名無しさん
2007/04/14(土) 21:23:210015デフォルトの名無しさん
2007/04/14(土) 21:25:02ただまあ、場合によっては強制終了させざるをえないこともあるので、
そういう場合は仕方なくAbort。
それ以外のサスペンドとか、そんなものはそもそも使わない。
0016デフォルトの名無しさん
2007/04/14(土) 21:25:340017デフォルトの名無しさん
2007/04/14(土) 22:03:17{
this._CntA++;
this.textBox1.AppendText(this._CntA + "回目のThreadA" + "の出力です。\n");
Thread.Sleep(600);
}
こんな感じのメソッドを回していました
あと、トグルスイッチ風ボタンでスレッドを止めたり動かしたりしたかったのでサスペンドを使いました
0018デフォルトの名無しさん
2007/04/14(土) 22:11:540019デフォルトの名無しさん
2007/04/14(土) 22:21:48メインスレッド(フォーム?)からスレッドAとスレッドBを起動したとして、
スレッドA,Bが動作中にユーザがフォームを閉じたとしても、
Closingイベントにスレッド終了コードのようなものは書かなくてもいいのかな?
0020デフォルトの名無しさん
2007/04/14(土) 22:24:56っていうか、そんなことも知らずにスレッド使ってるのか。
キチガイに刃(
0021デフォルトの名無しさん
2007/04/14(土) 22:34:20そもそも閉じたら動いちゃいけない処理とかもあるでしょ、大抵は。
※そりゃほんとに大丈夫ってこともないこたないが、普通は適切な条件で終了するようにする。
ていうかよ>>17なんて突っ込んだらいいのか…
0022デフォルトの名無しさん
2007/04/14(土) 22:36:47同期用「オブジェクトなどを使って自立的に行うべき。
どうしようもない場合は仕方ないが。
0023デフォルトの名無しさん
2007/04/14(土) 22:37:00日本語書けよ
00246
2007/04/15(日) 02:33:52どなたかお願いします。
いまだにできません。
0025デフォルトの名無しさん
2007/04/15(日) 11:58:15プロジェクトUP
0026デフォルトの名無しさん
2007/04/15(日) 13:15:26なんかできる時とできない時あるな…
ちなみに Selected イベントじゃなく SelectIndexChanged な。
0027デフォルトの名無しさん
2007/04/15(日) 13:54:49マウスウィールは良いとしても、「WebBrowserが〜動く」っていうのは
どういう状態のことを差してるんだよw
基本的に、人語すら正確に操れない奴が融通利かねえマシン相手の言語を
使えるわけがないと思う。
0028デフォルトの名無しさん
2007/04/15(日) 13:58:310029デフォルトの名無しさん
2007/04/15(日) 16:48:42関数の配列宣言って具体的にどうやるんでしょうか?教えてください。
0030デフォルトの名無しさん
2007/04/15(日) 16:51:47Func[] func;
003129
2007/04/15(日) 16:55:260032速報+
2007/04/15(日) 17:23:59ニュース速報+ 板
http://news22.2ch.net/newsplus/
芸能音楽スポーツ速報+ 板
http://news21.2ch.net/mnewsplus/
東アジアニュース速報+ 板
http://news21.2ch.net/news4plus/
ビジネスニュース+ 板
http://news21.2ch.net/bizplus/
科学ニュース+ 板
http://news21.2ch.net/scienceplus/
0033デフォルトの名無しさん
2007/04/15(日) 18:51:00ググッたけど見つからなかったもので
0034デフォルトの名無しさん
2007/04/15(日) 18:57:09俺がググったらすぐ見つかった。ググり直せ。
0035デフォルトの名無しさん
2007/04/15(日) 19:10:44「C# 壁紙の変更」でググッたら見つかるが?
0036デフォルトの名無しさん
2007/04/15(日) 19:18:24>>35
ググったけどよくわからん
C++のSystemParametersInfo(SPI_SETDESKWALLPAPERのC#版教えて
0037デフォルトの名無しさん
2007/04/15(日) 19:18:320038デフォルトの名無しさん
2007/04/15(日) 21:18:06ググれとしか…
0039デフォルトの名無しさん
2007/04/16(月) 01:53:37DataGridViewの全セルのサイズ(縦、横)を揃えたいのですが、
コード上でどのように設定すればよいのでしょうか?
碁盤目状のものを作りたいのですが、ご存知の方がおりましたら
よろしくお願いします。
0040デフォルトの名無しさん
2007/04/16(月) 12:34:52メニューの項目を日本語で設定すると、関連するイベントハンドラの
名前などもコード上に日本語で生成されますね。
英語圏なら問題ないでしょうが、これはある意味バグですね。
しかし、メンバ名が日本語でもコンパイルできるんですね。驚いた
0041デフォルトの名無しさん
2007/04/16(月) 12:41:580042デフォルトの名無しさん
2007/04/16(月) 13:16:43模索しております。色々なサイトを検索してGot Focusイベント
にてSelectAllを使用すれば実現出来る事は確認しました。
しかし、Got Focusイベントは低水準イベントで使用することを
推奨できない かつ FormがActiveになるとGot Focusイベント
が発生する。この2つの理由でお手上げ状態です。
コントロールをMaskedTextBox -> TextBoxに変更して正規
表現で入力チェックを行えば済ことなのですが…
MaskedTextBoxで全選択状態(反転表示)の実現方法は
あるのでしょうか?
0043デフォルトの名無しさん
2007/04/16(月) 13:47:48MaskedTextBoxだろうがTextBoxだろうがSelectAll()同じように効くはずだけど?
もしかしてボタンクリックでSelectAllしてない?
SelectAll() の前に Focus()すれば済む話しだったりして?
0044デフォルトの名無しさん
2007/04/16(月) 14:03:10Tabでフォーカスを移動したときです。
0045デフォルトの名無しさん
2007/04/16(月) 14:27:13MaskedTextBoxとTextBoxとでSelectAllの挙動に違いは見られない。
>FormがActiveになるとGot Focusイベント
ってのは単にMaskedTextBoxがActiveControlなだけのはなしでしょ。
それがいやなら適切なタイミングで
Form.ActiveControlを他のコントロールに設定すればいい。
private void maskedTextBox1_Enter( object sender, EventArgs e )
{
this.maskedTextBox1.Focus();
this.maskedTextBox1.SelectAll();
}
ってすればいいだけじゃね
EnterじゃなくてGotFocusでもいい
0046デフォルトの名無しさん
2007/04/16(月) 14:49:200047デフォルトの名無しさん
2007/04/16(月) 20:12:58ProcessStartInfo startInfo = new ProcessStartInfo(IEXPLORE.exe);
startInfo.Arguments = "http://localhost/WebApplication1/version.html";
Process.Start(startInfo);
と言うように、Processを使ってIEを起動した場合、targetは指定できないのでしょうか?
何度も新規ウィンドウを表示したくないのですが・・・
0048デフォルトの名無しさん
2007/04/16(月) 20:19:06C#のコードで、現在開いている特定のブラウザ(IE)を閉じる事はできますか?
連続質問で申し訳ありません・・・
0049デフォルトの名無しさん
2007/04/16(月) 20:20:010050デフォルトの名無しさん
2007/04/16(月) 20:27:58出来ない
>>48
FindWindow で IE 捕まえて WM_CLOSE 投げる
0052デフォルトの名無しさん
2007/04/16(月) 20:49:200053デフォルトの名無しさん
2007/04/16(月) 20:51:42005447
2007/04/16(月) 20:56:14targetは>>53 のことです。
>>50
申し訳ありません。
FindWindow や WM_CLOSE はC#で使用できるものでしょうか?
0055デフォルトの名無しさん
2007/04/16(月) 20:59:29できる
0056デフォルトの名無しさん
2007/04/16(月) 21:01:20DDE使えばいいんじゃね?
なんかものすごい旧時代を感じさせられる名前だがw
0057デフォルトの名無しさん
2007/04/16(月) 21:05:02すいませんありがとうございます
0058デフォルトの名無しさん
2007/04/16(月) 21:37:16byte[] data; //元のデータ
sbyte[] sdata = new sbyte[data.Length]; //変換後のデータ
for (int i = 0; i < data.Length; i++)
{
sdata[i] = (sbyte)data[i];
}
といったように素直にキャストしていくのと、
[StructLayout(LayoutKind.Explicit)]
public struct ChangeArray
{
[FieldOffset(0)]
public byte[] Data;
[FieldOffset(0)]
public sbyte[] SData;
}
…
byte[] data; //元のデータ
sbyte[] sdata = new sbyte[data.Length]; //変換後のデータ
ChangeArray ca = new ChangeArray();
ca.Data = data;
sdata = ca.SData;
という風に変換するのとでは、どちらが速いでしょうか?
0059デフォルトの名無しさん
2007/04/16(月) 21:41:51後者は動作が保証されない。
Buffer.BlockCopy しとけ。
0060デフォルトの名無しさん
2007/04/16(月) 21:42:270061デフォルトの名無しさん
2007/04/16(月) 21:53:29>後者は動作が保証されない。
そうなんですか…
Buffer.BlockCopyっていうものの存在を知らなかったので
どうしようかずっと悩んでました。
ありがとうございました。
>>60
今コンパイラがないもので、試そうにも試せません(インスコしようにも制限がかかってる) orz
0062デフォルトの名無しさん
2007/04/16(月) 22:19:43プログラム板って他の板に比べて格段に優しい人が多いね。
正直ちょっと感動した。
0063デフォルトの名無しさん
2007/04/16(月) 22:30:000064デフォルトの名無しさん
2007/04/16(月) 22:45:54>後者は動作が保証されない。
これって本当か?
この.NETの構造体を共用体的に使うテクニックって
割と一般的に用いられていると思うんだけど。
まあでも>>58の意図が不明なんでなんともいえないが、変換(?)後のデータを
破壊的に使っても変換前のデータまで壊れないようにしたいのなら
unsafe使ってコピーとか、そういう方法の方が良いのは確かだけど。
0065デフォルトの名無しさん
2007/04/16(月) 22:55:16よく見れ。
値型を重ねるなら意味分かるが、>>58で重ねているのは値型の配列だ。
0066デフォルトの名無しさん
2007/04/16(月) 22:57:58しかしドキュメントにはろくすっぽ記述がないんだよな。
『Unions のサンプル』に「参照型の場合には明示的なレイアウトが許されないからです。」と書かれてるくらい。
0067デフォルトの名無しさん
2007/04/16(月) 23:03:240068デフォルトの名無しさん
2007/04/16(月) 23:16:37いや「コピーしない」と言う選択肢もある
0069デフォルトの名無しさん
2007/04/16(月) 23:16:56サンプルコードが載っていますが、最初にイベントハンドラを解除して、
最後に再設定しなおしている理由が分かりません。何故でしょうか?
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10370&forum=7
0070デフォルトの名無しさん
2007/04/16(月) 23:19:37unsafe
fixed
最強
0071デフォルトの名無しさん
2007/04/16(月) 23:24:59TextChangedイベントハンドラ内でTextを変更しているから。
そうしなければその時点でTextChangedイベントが発生して無限ループ。
だがいいコードではないと思う
0072デフォルトの名無しさん
2007/04/16(月) 23:27:39TextChanged イベントハンドラの中で Text プロパティの値を変更すると、そこでさらに
TextChanged イベントが発生してしまう。
さらにそのイベントハンドラのの中で Text プロパティの値を変更……と、延々とTextChanged イベントが
発生し続け、しまいにはStackOverflowExceptionでアプリケーションが落ちる。
試しに適当なフォームにTextBoxを配置して、TextChanged イベントハンドラの中で
textBox1.Text += "A";
とでもやってみ。
0073デフォルトの名無しさん
2007/04/16(月) 23:30:16ああなるほど。
ではMarshalAs属性でUnmanagedType.ByValArrayを指定すればCと同じように
構造体の中に参照ではなく配列そのものが確保されるようになるのかな。
それともこの属性の意味は、あくまでアンマネージコードを呼び出す前後の
変換方法を指示しているだけになるのか?
0074デフォルトの名無しさん
2007/04/16(月) 23:32:00尤も固定長に限られるけど。
0075デフォルトの名無しさん
2007/04/16(月) 23:38:20>>72
ありがとうございます。理解できました。
日本語とアルファベットを交互に入力して
文字数制限するいい方法が他に思いつきませんが、
このサイトの方法でとりあえず使ってみます。
0076デフォルトの名無しさん
2007/04/16(月) 23:39:08マーシャリングにのみ関わってくる属性のような気がする。
0077デフォルトの名無しさん
2007/04/16(月) 23:49:47>それともこの属性の意味は、あくまでアンマネージコードを呼び出す前後の
>変換方法を指示しているだけになるのか?
正解。
CLR管理下で特殊なメモリイメージを作りたいというのなら、
アンセーフだが一応こういう方法はある。あと固定長専用。
[StructLayout(LayoutKind.Explicit)]
public unsafe struct ChangeArray
{
[FieldOffset(0)]
public fixed byte Data[128];
[FieldOffset(0)]
public fixed sbyte SData[128];
}
ttp://msdn2.microsoft.com/ja-jp/library/zycewsya(VS.80).aspx
0079デフォルトの名無しさん
2007/04/17(火) 00:07:400080デフォルトの名無しさん
2007/04/17(火) 00:08:57008139
2007/04/17(火) 00:26:24C♯, C#相談室 で聞くべき?
0082デフォルトの名無しさん
2007/04/17(火) 00:31:29プロパティのMaxWidthを変更
0083デフォルトの名無しさん
2007/04/17(火) 01:56:48候補はC#・VB・JAVAです。
ゆくゆくはC言語とC++も学びたいと考えています。
ということはやっぱりC#から始めるのがいいのかなと思って、こちらに投稿してみました。
だけど本屋にはC#の本は少ないですね。
JAVAとVBは多いです。
だからC#がよさそうだとは感じながらも、ちょっと心配もしているのです。
0084デフォルトの名無しさん
2007/04/17(火) 02:02:24VisualC# Express EditionはMSから無料で落とせます。
C#を一通りやったら、ポインタの概念を勉強するためC++ or Cをかじりましょう。
書籍は、Amazonで探せば結構あります。
0085デフォルトの名無しさん
2007/04/17(火) 02:09:23VBはMSも無理やり繋げてる状態
java・C#は似てるからどっちか覚えれば違和感無く書ける
つかrubyも選択肢に入れてあげて
0086デフォルトの名無しさん
2007/04/17(火) 07:32:250087デフォルトの名無しさん
2007/04/17(火) 14:51:24地味に便利そうなんだけど,
ついつい存在を忘れて a != null ? a : "nullですよ";ってやっちゃう
0088デフォルトの名無しさん
2007/04/17(火) 15:22:20むしろ君が普通ではないと思う 俺は異端児?
0089デフォルトの名無しさん
2007/04/17(火) 16:15:43そんなの
a = a + 1;
a += 1;
a++;
程度の問題だべ。それよりちょっと聞いてくれよ。
俺は何かと何かが混ざったようなC#なんて特に触りたくもないんだが、
言語仕様を見たらtrueとfalseが演算子だって?
こんな構文になるのか?フーン
public class Hoge {
public static bool operator true(Hoge t){
}
,..(もちろんfalseも定義)
};
Hoge hoge = new Hoge();
...
if(true hoge) {
...
}
0090デフォルトの名無しさん
2007/04/17(火) 16:26:480091デフォルトの名無しさん
2007/04/17(火) 16:43:25試してみても,動作は同じに見えるんだけど
0092デフォルトの名無しさん
2007/04/17(火) 16:50:21trueかつfalseってのは意味的に使い道がなさそうだが、
trueでなくfalseでもない値を導入すればtriboolのようなものになる。
0093デフォルトの名無しさん
2007/04/17(火) 17:38:51済まないが、ちょっと分からない。
bool型への暗黙的型変換?
暗黙的型変換の例としては
double d = 10.5;
int i;
i = d;
(iは10になる)
明示的なら
a = (bool)false;
だが、これは禁止されている。
仕様書には
A unary true or false operator must take a single parameter of type T and must return type bool.
だから、クラスHogeに演算するときは
true Hoge 又は false Hoge
となって、戻り値はbool型になる(後置演算かもしれないが分からない)。これではちょっと混乱してしまう。
例示してほしいのだが、いかがか?
0094デフォルトの名無しさん
2007/04/17(火) 17:43:30○ bool b = (bool)i;
0095デフォルトの名無しさん
2007/04/17(火) 18:10:21true/false演算子が使えるのは条件が必要な場所、つまり、if(), do-while(), while(), for(;ここ;) や ?:演算子の第一オペランド。
operator trueが呼び出されて、bool型に暗黙的に変換されたかのように振舞う。
たとえば、型Tにtrue/false演算子が定義されていれば、
| T t;
| if(t) { }
| int a = t ? 0 : 1;
のようなことが出来るようになる。
尤もC#ではop_Falseを使えないから、これだけでtribool的なものは作れないんだけどね。
0097デフォルトの名無しさん
2007/04/17(火) 18:30:370098デフォルトの名無しさん
2007/04/17(火) 18:40:40一見便利に見えて、実はタイピング量を減らすという僅かなメリットと引き換えに
混乱をもたらすだけの機能に思えるけどなあ。
VB6の「デフォルトのプロパティ」と同列の堕落じゃん。
0099デフォルトの名無しさん
2007/04/17(火) 18:41:18いや、STLにのInputFileStreamクラス(だったかな?)があって、
InputFileStream ifs(...
...
if(!ifs) { // ←ファイルがオープンされてるかどうか
// エラー処理
}
というのは半ば常識なんで、STLerで知らない人はあまり居ないと思う。
確かに初心者には変な構文なので、独学だと混乱するかもね。
0100デフォルトの名無しさん
2007/04/17(火) 18:50:00boolにように働く型を作るための機能だから問題ないと思うが。
というか、そもそもこれはCLIの機能であってC#は申し訳程度にサポートしてるだけのような気がする。
0101デフォルトの名無しさん
2007/04/17(火) 19:11:45ほんまかよっ
■ このスレッドは過去ログ倉庫に格納されています