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

ふらっとC#, C♯, C#(初心者用) Part15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/04/12(木) 23:14:25
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

前スレ: ふらっとC♯, C#(初心者用) Part14
http://pc11.2ch.net/test/read.cgi/tech/1172662746/
0153デフォルトの名無しさん2007/04/19(木) 21:46:53
>>152
まさか、お前、本気でSelectedIndicesの使い方しらんのか?
MSDN読んどけよ。
0154デフォルトの名無しさん2007/04/19(木) 21:47:41
>>152
色々勘違いしているようだ

つか ListView.SelectedIndices ってスナップショットじゃないのな
ちょっと驚き
0155デフォルトの名無しさん2007/04/19(木) 22:02:43
ありがとうございます。ところでここは初心者スレじゃないんですか?

listView1.Focus();
listView1.Items[n].Selected = true;
で,出ますね
items[]なんてあるとわからないで items.で捜してしまって初心者にはわからないのですよ
ヒントもらえるとホント助かります
0156デフォルトの名無しさん2007/04/19(木) 22:03:42
listView1.SelectedIndices.Add(n);
0157デフォルトの名無しさん2007/04/19(木) 22:19:08
.netのexeってなんか個人情報埋め込まれないか
心配なんですが、そこらへんの情報ありませんか?
0158デフォルトの名無しさん2007/04/19(木) 23:22:24
アセンブリのGUIDからMACアドレスが逆算できるってのはあるかもしれん
0159デフォルトの名無しさん2007/04/19(木) 23:30:42
>>157
VS2005からコンパイルするとRelaseモードでも/debug:pdb-onlyになってるから
*.pdbファイルへのフルパスが埋め込まれている。
そのパスにユーザー名が入ってたらそれはわかる。
0160デフォルトの名無しさん2007/04/19(木) 23:35:02
それはexeとはいわない
0161デフォルトの名無しさん2007/04/19(木) 23:37:25
何を言ってんだ?
0162デフォルトの名無しさん2007/04/19(木) 23:38:52
失礼したw
0163デフォルトの名無しさん2007/04/20(金) 00:12:16
.NET1.1のRichTextBoxで、一般的なWindowsアプリにあるようなダブルクリックに
よる単語選択ができません。

トリプルクリックによる行選択は出来るのですが、ダブルクリックでは1文字だけが
選択されてしまいます。

また、ドラッグによるテキスト選択を行おうとすると、カーソルの彼方の方まで選択
してしまったりと、謎の挙動で困っております。

このような挙動を、一般的なアプリ風にするには、どのようにしたらいいのでしょうか?
0164デフォルトの名無しさん2007/04/20(金) 00:29:46
んー、大体普通に動くようだが。
ダブルクリックで単語選択できるし。

新しいフォームに RichTextBox 貼り付けただけのプロジェクトで試してみた?
0165デフォルトの名無しさん2007/04/20(金) 01:03:56
>>164
新規プロジェクトを作ってRichTextBoxを1つだけ貼り付けて、何も設定していない状態で
試してみましたが、英語とひらがな・カタカナは正常に選択されますが、漢字がダメです。

「これは機能テストです。」という文字列を入力して試してみたのですが、
「これは」「テスト」「です」は正常、「機能」の部分だけ選択されないという状況でした。

通常、ダブルクリックで選択するような場合は、漢字の変換ミスの時が多いと思うので、
なんとかしたいのですが、解決方法がまったく思いつきません。。。

もしかしたら、.NET2.0では直っているのでしょうか。。。
0166デフォルトの名無しさん2007/04/20(金) 01:08:51
それRichEditの仕様
ワードパットで試してみ。

自分でクリック位置の前後の単語区切りを探して選択するようなコードを書けばいい。
0167デフォルトの名無しさん2007/04/20(金) 01:14:26
>>165
あーそりゃ RichEdit の仕様だ。ワードパッドでもそうなる。
漢字は一文字で 1 ワード。ひらがなやカタカナは同じ文字種の範囲で 1 ワード。
どうにかするには……思いつかんな。
一般的なエディタは RichEdit なぞ使わんからなぁ。
0168デフォルトの名無しさん2007/04/20(金) 01:25:37
>>166-167
あぁ、確認しました。。。

> 自分でクリック位置の前後の単語区切りを探して選択するようなコードを書けばいい。

(´A`)
0169デフォルトの名無しさん2007/04/20(金) 07:42:07
C♯, C#相談室 Part38
http://pc11.2ch.net/test/read.cgi/tech/1173763436/592

592 名前:デフォルトの名無しさん[] 投稿日:2007/04/18(水) 01:31:56
.NET1.1とC#で勉強を兼ねてワードパットのようなモノを作っているのですが、
RichTextBoxで一般的なWindowsアプリにあるようなダブルクリックによる
単語選択ができません。

トリプルクリックによる行選択は出来るのですが、ダブルクリックでは1文字だけが
選択されてしまいます。

また、ドラッグによるテキスト選択を行おうとすると、カーソルの彼方の方まで選択
してしまったりと、謎の挙動で困っております。

このような場合は、どのようにしたらいいのでしょうか?
0170デフォルトの名無しさん2007/04/20(金) 08:19:00
コピペ君も馬鹿だが、しかしどうしてわざわざ文章考えて質問分を
タイピングする前に当たり前の確認作業をしようと思わないのかね。

少なくとも俺には精神分析の対象程度には人格が壊れてるとしか思えない。
0171デフォルトの名無しさん2007/04/20(金) 08:38:45
マルチ指摘厨
精神分析厨
0172デフォルトの名無しさん2007/04/20(金) 12:24:45
アセンブリリソースに画像ファイルがはいってるとします。
Resources1.designer.csが作られて
Resource1.imgHogeとプロパティでアクセスできるんですが、

この場合返ってきたBitmapオブジェクトは、使い終わったら
Disposeするべきなんですか?

Disposeした場合、
もう一度Resource1.imgHogeってアクセスしても普通に使えるんですが
これは安全ですか?

ResourceManager.GetObjectをMSDNで読むと
「……複数回呼び出した場合、戻り値が同じオブジェクトの参照になるとは限りません。……」
とあるので、同じ参照になる場合もあるってことですかね?
0173デフォルトの名無しさん2007/04/20(金) 16:30:09
自分で作ったオブジェクト以外はGCに任せるのが得策だとは思わんかね
0174デフォルトの名無しさん2007/04/20(金) 19:52:45
>>173
Paintイベントで使ってて >>172 のような疑問を持ったらオレは夜も眠れない

っていうかもう眠れないじゃねーか!w

0175デフォルトの名無しさん2007/04/20(金) 21:02:19
>>174
PaintEventArgs.GraphicsはDisposeしてはならん。
01761652007/04/20(金) 21:43:15
>>165の続きなのですが、Windowsの仕様との事なので自前で実装してみようと試みているのですが、
public class RichTextBoxCustom : System.Windows.Forms.RichTextBox {
protected override void OnDoubleClick(EventArgs e) {
MessageBox.Show("test");
}
}
という風にしたものをフォームに貼り付けてダブルクリックしてみたのですが、反応がありません。
で、VisualStudioでブレイクポイントを設定してみたのですが、入ってきている形跡がないようなのですが、
なんででしょうか?
0177デフォルトの名無しさん2007/04/20(金) 23:00:18
protected override void OnMouseDoubleClick( MouseEventArgs e )
{
    MessageBox.Show( "test" );
    base.OnMouseDoubleClick( e );
}


だけどテキストが選択されてからMessageBoxがでるようだから
もっとメッセージ的に前のイベントをとるか
WndProcでマウスメッセージ捕まえるかしたほうがいい。

まずはReflectorでRichTextBoxの挙動を調べろ
話はそれからだ
0178デフォルトの名無しさん2007/04/21(土) 00:34:08
>まずはReflectorでRichTextBoxの挙動を調べろ
>話はそれからだ
北方謙三にでもなったつもりかねw
頭オカシイんじゃねえの
0179デフォルトの名無しさん2007/04/21(土) 00:49:33
>>178
Reflector使うのがかっこいい年頃なんだろw
0180デフォルトの名無しさん2007/04/21(土) 01:29:16
便利なのは確か
0181デフォルトの名無しさん2007/04/21(土) 02:35:45
便器なのも確か
0182デフォルトの名無しさん2007/04/21(土) 04:14:38
北方謙三って……
おっさん年いくつだよ
0183北方謙三2007/04/21(土) 07:37:11
質問に対してソープ行ってこいで返すそれが俺のジャスティス
0184デフォルトの名無しさん2007/04/21(土) 08:05:51
Reflector?漢は黙ってildasmだろ
0185デフォルトの名無しさん2007/04/21(土) 10:54:21
Reflectorわろた
いいねぇ趣味でやってる学生プログラムマーは。コストなんて無関係でw


0186デフォルトの名無しさん2007/04/21(土) 10:56:20
いちがいにそういいきれるおまえもおめでたいわ。
手っ取り早く挙動を確認するのに、早い場合「も」あるわな。
0187デフォルトの名無しさん2007/04/21(土) 11:08:23
Reflectorとコストって同関係あるの?
0188デフォルトの名無しさん2007/04/21(土) 12:01:35
C#ってすげー便利なんだけど、いまいち遅いんだよな・・・・
0189デフォルトの名無しさん2007/04/21(土) 13:52:22
C++++の略ってほんとう?
0190デフォルトの名無しさん2007/04/21(土) 14:10:42
CはCナチュラルの・・・あれ?SJISには♯と♭があるのにナチュラルがない?
0191デフォルトの名無しさん2007/04/21(土) 14:11:50
>>189
ほんとう
ttp://www.atmarkit.co.jp/fdotnet/insiderseye/20060215cscommunity/cscommunity_01.html
0192デフォルトの名無しさん2007/04/21(土) 14:41:03
>>190
一応コードポイント 81F8 ということになってはいる。
0193デフォルトの名無しさん2007/04/21(土) 14:47:09
補足:
JIS X 0213 には入ってるし、だから当然 Unicode にも入ってるし、メイリオ や Tahoma にはグリフもあるんだけど、
Windows の持ってるコード変換テーブルにはなぜか含まれない。
0194デフォルトの名無しさん2007/04/21(土) 17:58:23
アクティブウインドウを取得するにはどうすればよろしいでしょうか。

アクティブウインドウのX・Y座標とWidthとHeightを知りたいのですが、
WIN32APIのGetActiveWindow使いますか?
0195デフォルトの名無しさん2007/04/21(土) 18:38:46
ちょっとくらいヘルプみろ。

System.Windows.Forms.Form.ActiveForm()
0196デフォルトの名無しさん2007/04/21(土) 18:41:47
>>194
取得するフォームが自分のアプリケーションだけならば >>195 を
そうで無いならば GetActiveWindow を
0197デフォルトの名無しさん2007/04/21(土) 22:30:55
今日からC#始めました。VisualStudio2005使用です。
とりあえず色々コントロールを使ってみようと思ってフォームにステータスバーを置いたら
見た目が普通のものと違う、、、
コレって普通の見た目のステータスバーにはできないでしょうか?
0198デフォルトの名無しさん2007/04/21(土) 22:40:22
いまいちいみがわかりません
0199デフォルトの名無しさん2007/04/21(土) 22:55:41
>>198とは別人ですが、本当に意味が分かりません。
0200デフォルトの名無しさん2007/04/21(土) 23:24:22
toolStripStatusLabelを置いた時に凹んでないってことじゃね
0201デフォルトの名無しさん2007/04/22(日) 00:07:23
今日から始めていきなりこれか。
先が思いやられるな
0202デフォルトの名無しさん2007/04/22(日) 00:21:35
間違えて TrackBar 置いてたりしてな
0203デフォルトの名無しさん2007/04/22(日) 01:33:52
StatusStripを置いたら、StatusBarと見た目が違って戸惑っているんだろう。
02042022007/04/22(日) 01:36:47
って、ステータスバーか。スクロールバーと読み間違えた。ごめぬ。
0205デフォルトの名無しさん2007/04/22(日) 01:45:36
>>197
Main()の最初にこの一行追加して実行したまへ

ToolStripManager.VisualStylesEnabled = false;
0206デフォルトの名無しさん2007/04/22(日) 10:54:11
メッセージを親ウインドウに送るにはどうすればいいですか?
0207デフォルトの名無しさん2007/04/22(日) 11:00:47
子ウィンドウを作るときに親を引数にして子側で保存しておけばいいんじゃね
0208デフォルトの名無しさん2007/04/22(日) 11:08:31
それだと直で呼び出すから、まだ子ウインドウが実行中でよろしくないかなぁと
思って、メッセージのキューの方法で実現できる方法を探していました。

でも今挫折してデリゲートを関数ポインタとして使って親に通知しようとしてます。。。
だめ?
0209デフォルトの名無しさん2007/04/22(日) 11:22:05
日本語として成立してないと思う、その文章
0210デフォルトの名無しさん2007/04/22(日) 12:12:42
子ウインドウが実行中って?
メッセージキューの方法って? ポストするってこと?
関数ポインタで親に通知って?

よのなか謎でいっぱい
0211デフォルトの名無しさん2007/04/22(日) 12:45:11
普通にeventでじゃだめなのか???
0212デフォルトの名無しさん2007/04/22(日) 12:46:15
自前でメッセージキューでもなんでも実装すりゃよろしいがな
0213デフォルトの名無しさん2007/04/22(日) 14:02:00
C井
0214デフォルトの名無しさん2007/04/22(日) 14:07:11
質問です。

ttp://www.atmarkit.co.jp/fdotnet/easyvs2nd/easyvs2nd01/easyvs2nd01_04.html
にあるように[新規プロジェクト]→[Windowsアプリケーション]で生成されたプログラムを、
素の状態でビルドして実行してもフォームが表示されません。ビルドされたファイルを直接開いても同様です。
見たところタスクマネージャーにも変化が見られないんですが、これって何かの設定ミスとかなのでしょうか?

環境はWin XP SP2、VC#2005 Express Editionです
0215デフォルトの名無しさん2007/04/22(日) 14:44:06
ビルドされたファイルはどこにあったの?
0216デフォルトの名無しさん2007/04/22(日) 15:00:45
ビルドしただけで実行してないとか
02172142007/04/22(日) 15:39:57
実行は
・VC#で[F5]または[Ctrl+F5]で実行
・ビルドしたファイルはデフォルトの設定のままで設定してるので
「マイドキュメント」→[Visual Studio 2005]→[Projects]→[Windows Aplication1]→[bin]→[Release]
にあった実行ファイルを直接開く

の2種類をトライしました。
他作業をしているときに気付いたのですが、どうやら一応実行だけはされているようです。
ただし開いた瞬間にアプリケーションが終了しているようでした。

ウィンドウサイズやタイトルのパラメータを弄ってビルドすると反映されることから、
一応ビルドはうまくいっているようです
0218デフォルトの名無しさん2007/04/22(日) 16:33:37
クソ言語C#
0219デフォルトの名無しさん2007/04/22(日) 16:43:36
Visual C# 2005 Express Editionで
Eclipseにあるようなtry〜catch()で囲むの機能
(選択範囲のスローされる例外のcatchを自動で生成してくれる)機能ってないでしょうか?
0220デフォルトの名無しさん2007/04/22(日) 16:49:42
ない。
C#にはJavaのthrowsに相当するものがないから
0221デフォルトの名無しさん2007/04/22(日) 16:49:57
catchする気もないのにcatchする輩が糞コードを量産していく
0222デフォルトの名無しさん2007/04/22(日) 17:03:26
>>221
空のcatchブロックが意味内のはわかりますが
catchする気がなくてもどんな例外が出るか一気に調べられて便利だと思うんですが
0223デフォルトの名無しさん2007/04/22(日) 17:07:35
いちいち煽りに付き合うなよ

MSDNのいい加減さをみりゃわかるだろうが、
発生する可能性のある例外を調べる方法はない。
0224デフォルトの名無しさん2007/04/22(日) 17:15:52
>>220、223
ありがとうございます。
0225デフォルトの名無しさん2007/04/22(日) 19:59:45
197です。

203さんの言うとおりStatusStripとStatusBarで見た目が違うので戸惑いました。
205さん解答ありがとうございました。これからちょっと試してみます。
0226デフォルトの名無しさん2007/04/22(日) 20:08:01
General.walker.Add(null);
General.walker[0].printtest();


public class StartWalker
{
public void printtest()
{
General.PRTMSG_LIST += "----------------------------------------\r\n";
}
}
public struct General
{
public static List<StartWalker> walker = new List<StartWalker>();
}
こんばんは、上記のような使い方をしたいのですが設定の方法がわかりません
おしえていただけないでしょうか?
0227デフォルトの名無しさん2007/04/22(日) 20:16:56
俺はエスパーじゃない
0228デフォルトの名無しさん2007/04/22(日) 20:51:30
2行目でいきなりぬるりのようだが
GeneralにPRTMSG_LISTなどというメンバはないようだが
0229デフォルトの名無しさん2007/04/22(日) 21:20:14
Positionの存在の意味がわからないです。
0230デフォルトの名無しさん2007/04/22(日) 21:22:47
日本語でおk
0231デフォルトの名無しさん2007/04/22(日) 21:23:45
Positionって何の為におるんかな。
0232デフォルトの名無しさん2007/04/22(日) 21:24:48
独り言なら公園のトイレで落書きでも眺めながらやってくれ
0233デフォルトの名無しさん2007/04/22(日) 21:29:27
まじで疑問なんですよ。行数をindexにしたらすむ話なんですけど。
0234デフォルトの名無しさん2007/04/22(日) 21:30:41
馬鹿に告ぐ
Positionはいろいろある。

何のPositionか書け。
0235デフォルトの名無しさん2007/04/22(日) 21:32:09
DataSet.Datatable.index+1

DataSet.Datatable.Position
0236デフォルトの名無しさん2007/04/22(日) 21:42:30
General.walker.Add(null);
General.walker[0].printtest();
General.walker.Add(null);
General.walker[1].printtest();
int c = General.walker[1].intB();
General.walker[1].intB() = 5;

public class StartWalker
{
string a = "";
string msgstack = "";
int b =0;
public void printtest()
{
//メインになる動作を入れます
msgstack += "test you"+"\r\n";
}
public int intB {
get { return b;}
set { b = value}
}

}
public struct General
{
public static List<StartWalker> walker = new List<StartWalker>();
}
説明不足で申し訳ありません
マルチスレッドでStartWalkerの部分をGeneral.walker.Add(null);で任意の数ついかしたいのですが
うまく説明できません・・・
0237デフォルトの名無しさん2007/04/22(日) 21:45:31
何がしたいのか他人にもわかるように説明してくれ
0238デフォルトの名無しさん2007/04/22(日) 21:46:36
人に見せるソースなら最低限MSDNに書いてある命名規則に則って欲しいな
0239デフォルトの名無しさん2007/04/22(日) 21:47:08
コード書く前に何をしたいのか日本語で書け。
0240デフォルトの名無しさん2007/04/22(日) 21:49:08
いい加減になんのpositonか書け。
helpトピック25件も出るぞ。
0241デフォルトの名無しさん2007/04/22(日) 21:49:59
さっきからPositionPositionうるせえよ。黙っとれ
0242デフォルトの名無しさん2007/04/22(日) 21:50:07
かまへんで。
かまねんねやけどな。
なんでnullをAddするんかいな。
おっちゃんそこんとこわからへんねん。
うごかへんのとちゃうんかいな。
0243デフォルトの名無しさん2007/04/22(日) 21:54:17
//メインのプログラムループ

ボタンを押す
設定した数のサブプログラムスレッドを起動

ボタン2を押す
n番目のスレッドの変数cを参照して表示する

//サブプログラム

乱数ベースでさまざまな演算を行い変数を格納
int a =1;
int b =2;
int c =3;

上記のようなプログラムが組みたいのですが
0244デフォルトの名無しさん2007/04/22(日) 21:56:54
>>243
いままでなんでそれを書かなかったの?
ゆとり世代?
0245デフォルトの名無しさん2007/04/22(日) 21:57:28
>>243
組めば?
0246デフォルトの名無しさん2007/04/22(日) 21:57:42
すみません。。
何をAddすれば動くのかわからなくって
とりあえずnull入れちゃってます・・・
0247デフォルトの名無しさん2007/04/22(日) 21:59:16
>>246
全くかすってない。
センスないよ。

いきなりスレッドなんかやらずに基礎から地道にやれよ。
0248デフォルトの名無しさん2007/04/22(日) 22:00:38
そもそも自分が何をやろうとしているのか分かってるのか

>>236を見る限りだと勉強不足が否めないな
スレッドなんか触るべきじゃない
0249デフォルトの名無しさん2007/04/22(日) 22:24:11
>n番目のスレッドの変数cを参照して表示する

このあたりも全くスレッドを理解してない証拠。
0250デフォルトの名無しさん2007/04/22(日) 22:55:37
いままでは
int view = a[threadnumber];
int view2 = a2[threadnumber];
のような参照の仕方だったのですが。
int view = Thread[0].getint();
int view2 = Thread[1].getint2();

クラスを作成してそれをマルチスレッドで動かし
後にそれぞれのクラスから計算結果を取り出そうと思ったのですが
public static List<StartWalker> walker = new List<StartWalker>();
でクラスのもとを作成して
walker.Add();
で要素(class)の数を追加
ThreadPool.QueueUserWorkItem(new WaitCallback(walker[0].main), 0);
でスレッドを起動みたいなイメージでした。
独学なのでいまいちわからなくてこまっています。。
0251デフォルトの名無しさん2007/04/22(日) 23:01:07
とりあえず、最初に言っておく。
『独学でそこまでやったことは素直に評価できると思う。セオリーとは乖離しているが』

walker に追加する理由は何だい?
後で参照するん?
0252デフォルトの名無しさん2007/04/22(日) 23:02:26
スレッド使う必要あるのか?
初心者とか関係なくこの言葉は常に頭に入れておいたほうがいいよ

Keep it Simple, Stupid.
■ このスレッドは過去ログ倉庫に格納されています