ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
331:デフォルトの名無しさん
09/06/09 14:47:30
時そばで、勘定中にカウンタを外部から書き換えられちゃったから
1文ごまかされちゃったんだよね。

332:デフォルトの名無しさん
09/06/09 14:51:35
>>330-331
レス感謝です。

333:デフォルトの名無しさん
09/06/09 14:55:55
>>331
感心したわ。

334:デフォルトの名無しさん
09/06/09 19:16:49
C# 2008で質問です。

非表示のフォームにDataGridViewを貼り付けてあります。
ここにReadXMLでデータを読み込んで、DataGridViewからデータを取り出そうとしたら
どのセルも空白のままでした。

一度でもフォームを表示すれば、そのタイミングで実際の読み込み動作が行わて
セルにデータが入るのですが、
非表示のままでデータをDataGridViewに反映させる方法を教えてください。

335:デフォルトの名無しさん
09/06/09 19:26:21
DataSet使おうよ…

336:デフォルトの名無しさん
09/06/10 03:18:40
VCEEでPen p=new Pen()をつくって
Form1にg.drawline(p,0,0,100,100)とかやったら
書けるんだけど、
画面切り替えたら消えちゃうんだけど消えないようにするにはどうやるの?

337:デフォルトの名無しさん
09/06/10 03:22:15
また描く
もしくは,なんかDoubleBufferみたいなプロパティがあればtrueに

338:デフォルトの名無しさん
09/06/10 03:22:59
Paintイベントで描く

339:デフォルトの名無しさん
09/06/10 03:26:06
>>337
なんか他にも設定する必要ありそ
URLリンク(www.google.com)

340:デフォルトの名無しさん
09/06/10 09:25:21
ソリューションエクスプローラー

ソリューション’game’(1プロジェクト)
└game
 ├ソースフェイル
 │├hello.cpp
 │└helo2cpp
 ├ヘッダーファイル
 └リソースファイル

となっています。

helllo.cpp

#include <stdio.h>
int main(void)
{
printf("こんにちは!\n");
return 0;
}

341:340の続き
09/06/10 09:26:03
helllo2.cpp

#include <stdio.h>
int main(void)
{
int a,b,c;
a=1;
b=2;
c=a+b;
printf("a+b=%d\n",c);
return 0;
}

とプログラムを書いたのですが、デバッグするとエラーが出ます。
main(void)が2つあるとプログラムが正常に作動しないんでしょうか?


342:デフォルトの名無しさん
09/06/10 09:31:01
スレ違い
どっかで聞き直すならエラーぐらい書けよ

343:デフォルトの名無しさん
09/06/10 09:32:34
mainは一つでなければなりません。

344:デフォルトの名無しさん
09/06/10 10:07:46
>>343
そうですか。よくわからないけど研究してみます。

345:デフォルトの名無しさん
09/06/10 10:28:53
C++の基礎を一通り勉強してみて、やっぱりC#にしようか悩んでるのですが・・・

作りたいアプリはあるウェブサイトの更新をするアプリです。
HTMLフォームのユーザビリティに嫌気がさしてきたもので。
スクリプト言語ですがPHPとかActionScriptとかJavascriptを仕事で使ってます。
JAVAもできます。

条件としては
1、オブジェクト指向でプログラミングできること。
2、なるべくwindowsに色々インストールしなくても使えること。
3、今後も役に立ちそうな言語であること

C#って.NETフレームワークが必須なんですよね?

C#って.NETフレームワークがインストールしてあったら、
他に何かランタイム無しで動くのですか?

2はインストーラーを作ればそれほど気にすることはないって聞いたけど
そういうもんでしょうか?


346:デフォルトの名無しさん
09/06/10 10:45:56
.NET2.0ターゲットならたいがいランタイムは入ってるからそんなに気にしなくていいよ
少なくともJavaよりは嫌われない

347:デフォルトの名無しさん
09/06/10 10:51:00
ClickOnceインストーラを使うのであれば、依存関係は勝手に作ってくれるしランタイムも言語別の細かいところも自動。
自分が何か手をいれる必要はないので意識はしなくてもいいし、自分はした事が無い。

348:デフォルトの名無しさん
09/06/10 10:54:11
Silverlight使えば?
Webの知識活かせるしクロスプラットフォームだしランタイム超小さいよ

349:デフォルトの名無しさん
09/06/10 10:58:17
347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
一般のインストーラを使って全部手動でやるきる必要がある。

それとClickOnceインストーラというのは、今はそう呼ばれていないかもしれない、プロジェクトのプロパティーの発行タブで設定して作れるインストーラの事。

350:デフォルトの名無しさん
09/06/10 12:56:24
>>345
まあHTMLフォームの代わりに使いたいと言ってるんだから、
ネイティブコードのモジュールを使いたいなんてことはそうそうないだろ。
.NETはメジャーな画像形式なら最初から扱えるし。
普通にC#でフォーム作って必要な機能を用意すればいいんじゃないかな。

ClickOnceええよ。
イメージとしてはサーバーに置かれているソフトを
ブラウザのローカルキャッシュにコピーして、そこで起動する感じ。

自作のフリーソフトをzip版とClickOnce版と両方提供してるけど、
ClickOnceならVSからリリースするだけで、zipをアップロードする必要もないし。

351:デフォルトの名無しさん
09/06/10 20:14:19
>>349
> 347に追加、C++からというならひょっとすると、C/C++コードとの相互運用を入れているかもしれないが、これが入っている時はClickOnceが使えないので注意。
> 一般のインストーラを使って全部手動でやるきる必要がある。

ダウト。やりようによってはできる。


352:デフォルトの名無しさん
09/06/10 21:36:43
>>351
実行時に別のインストーラ起動するって奴だろ、ClickOnceのHowToに書かれていたのでやってみたが
凄いめんどくさいぞ、それにそれをすると自動更新は役立たずになるし

353:デフォルトの名無しさん
09/06/10 21:44:10
MSのサイトにも書かれていたが、ClickOnceインストーラとmsiインストーラの使い分けの基準として
.NETの範囲で収まっているかどうかという所がポイントだと思われる
無理をしてClickOnceを使うよりはmsiの方がシンプルになるケースは少なくない。

354:デフォルトの名無しさん
09/06/10 21:44:43
Google Chrome でも使ってるけどな。>ClickOnce

355:デフォルトの名無しさん
09/06/10 21:48:53
ClickOnceはお手軽インストーラではあるけれども万能インストーラではないからな

356:デフォルトの名無しさん
09/06/10 21:49:37
>>351
違うだろ。C/C++ コードとの相互運用って、P/Invoke とかだろ?
別に ClickOnce アプリでも、P/Invoke やら COM Interop やらできるわけだが。

357:デフォルトの名無しさん
09/06/10 22:26:05
ClickOnceってサイトに来てもらえなくなるんじゃないの?
有料ソフトならいいけど

358:デフォルトの名無しさん
09/06/10 23:18:33
>>357
どういう意味だ?

359:デフォルトの名無しさん
09/06/10 23:31:00
C#を勉強しだして業務アプリは大体こなせるようになりました
趣味でTelnetクライアントやFTPクライアントを作ってみたいのですが、
何か参考になる書籍やサイトがあったら教えてください
RFCは勉強中です

360:デフォルトの名無しさん
09/06/10 23:42:08
RFCがまともなんでないかい
Telnetのネゴシエーションプロセスとか全く無いのとか
FTPはpassive対応してなかったりcontrolとdataの二本が必ずセットになってたりする

361:デフォルトの名無しさん
09/06/11 00:00:30
C#勉強しようと思ってるんですけど、とりあえずTurbo C#とか
入れればいいんでしょうか?
とりあえずサンプルとかをコピペして動くことを確認したいです。
作ろうとしてるものとか目標とかは今のとこありません。

あとお金も無いんですけど、
なんか購入する必要ってあるんですか?



362:デフォルトの名無しさん
09/06/11 00:03:19
妙なこだわりがないならVisual C# 2008 Express Editionにしておけ

買う物は特に必要なし

363:デフォルトの名無しさん
09/06/11 00:03:34
>>361
C#する前に仕事しろ

364:デフォルトの名無しさん
09/06/11 00:03:48
>>361
VC# Express入れればいい

365:デフォルトの名無しさん
09/06/11 00:26:12
Formを回転させたいのですがヒント下さい。
WPFだとあるかな?と思ったけど、ぐぐってもそれらしい情報が見つかりません。
#DirectXの範疇になるのでしょうか?

366:デフォルトの名無しさん
09/06/11 00:26:13
ツールボックスにあるポインターってなんすか?

367:デフォルトの名無しさん
09/06/11 00:30:06
ポインターとはポインターです、糞して寝てください

368:デフォルトの名無しさん
09/06/11 00:34:21
>>362
>>364
ありがとうございます!調べてみます!
>>363
仕事はしてます!契約がなくて社内ニート中ですけど!

369:デフォルトの名無しさん
09/06/11 00:41:21
どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッドなのに厳しいっすね

370:デフォルトの名無しさん
09/06/11 00:41:59
質問したいんじゃなくて喧嘩うってんだろw

371:デフォルトの名無しさん
09/06/11 00:42:27
つまり、金を貰いつつ社内でC#のお勉強か!羨ましい限りだな。

>>365
WPFならコントロールの回転はできるが、ウィンドウ自体の回転はできなかったと思う。

372:デフォルトの名無しさん
09/06/11 00:44:50
何で教えてくれないのか不思議で仕方ないっす

373:デフォルトの名無しさん
09/06/11 00:47:16
リアルでぶんなぐられないように十分注意することだ

374:デフォルトの名無しさん
09/06/11 02:14:06
VisualC#2008で質問があります。
おなじ画像をくり返し表示するのに、ツールボックスを使わず配列にしてみました。

namespace WindowsFormsApplication1{
public partial class Form1 : Form{
private System.Windows.Forms.PictureBox[] pictureBox;
public Form1(){
InitializeComponent();

string photo = @"C:\photo.jpg";
for (int i = 1; i < 5; i++){
this.pictureBox[i] = new System.Windows.Forms.PictureBox();
((System.ComponentModel.ISupportInitialize)(this.pictureBox[i])).BeginInit();
this.pictureBox[i].Location = new System.Drawing.Point(12, 22 + i * 200);
this.pictureBox[i].Name = "pictureBox[i]";
this.pictureBox[i].Size = new System.Drawing.Size(300, 200);
this.pictureBox[i].Image = Bitmap.FromFile(photo);
this.Controls.Add(this.pictureBox[i]);
}
}
}
}

で、コンパイルは通るのですが、エラーになります。
NullReferenceExceptionはハンドルされませんでした。
オブジェクト参照がオブジェクトインスタンスに設定されていません。
ってことなのですが、なにがNullになっているんでしょう?
なんかポカミスしている気がするんだけど…。


375:デフォルトの名無しさん
09/06/11 02:15:58
private System.Windows.Forms.PictureBox[] pictureBox;
がnull

376:デフォルトの名無しさん
09/06/11 02:16:34
デバッガで追っかけてけばすぐわかるよ
「自動変数」タブな

377:デフォルトの名無しさん
09/06/11 02:31:59
pictureBoxは何で初期化してないの?

378:デフォルトの名無しさん
09/06/11 02:39:30
早速サンキューです。
すばやっ。
助かります。
pictureBox = new PictureBox[5];
を追加して、無事表示できました。

ところで何度見ても、自動変数タブがないんですけど、…。
左から、ローカル、ウォッチ、呼び出し履歴、イミディエイトウィンドウ、出力。
どこに消えたかご存じないですよね?


379:デフォルトの名無しさん
09/06/11 02:45:49
ブレイク中のメニューのデバッグ>ウィンドウにあるはずだが

380:デフォルトの名無しさん
09/06/11 02:54:13
>for (int i = 1; i < 5; i++)
ここは大丈夫?
pictureBoxは0から4までの5つの要素のうち
1から4までの4つを使うことになるわけだけど

381:デフォルトの名無しさん
09/06/11 04:03:24
文字列の配列をstirng(羅列string, string, string, ...)に変換するにはどうすればいいですか?

382:デフォルトの名無しさん
09/06/11 04:30:00
日本語でおk
区切り文字を挿んで文字列を連結したいって事なら、string.Join

383:デフォルトの名無しさん
09/06/11 09:02:29
private void button1_click(object sender,Eventargs e)
の()の中のobject sender,Eventargs e
って何ですか

384:デフォルトの名無しさん
09/06/11 09:07:17
senderにはイベントを発生させたオブジェクト
eには必要に応じてイベントに関する情報
が入ってる

385:デフォルトの名無しさん
09/06/11 09:07:52
イベント送信者とイベント引数

386:デフォルトの名無しさん
09/06/11 09:34:27
しーぷっしゃー

387:デフォルトの名無しさん
09/06/11 09:44:18
らめぇ

388:デフォルトの名無しさん
09/06/11 11:25:10
あざっす

389:デフォルトの名無しさん
09/06/11 12:44:30
テキスト(たとえばtextBox)と画像(たとえばpictureBox)をまとめて扱う(表示とか移動とか削除とか)にはどうしたらよいですか?
ボタンなら、ボタンの背景(BackgroundImageプロパティ)にjpgファイルを指定できるので、表示するときに一度に表示できます。
textBoxのプロパティを見ても、背景のイメージを設定できないみたいなので…

390:デフォルトの名無しさん
09/06/11 12:46:52
ユーザーコントロール作ってまとめたら?

391:デフォルトの名無しさん
09/06/11 12:53:40
文字列の後ろを透けさせて背景画像を表示するのは無理
TextBoxそのものを自作するかWPFへどうぞ

392:デフォルトの名無しさん
09/06/11 13:48:09
>>390
サンクス。ユーザーコントロールというのはまだ作ったことがないので、勉強がてらやってみます。
>>391
サンクス。やっぱり。
でもまあ今回は、背景が単色なので、なんとかFormベースでやってみます。
TextBoxそのものの自作って、ユーザーコントロールってことですよね?
ところでWPFで、ここみたいにフランクに質問できるとこってないですか?

393:デフォルトの名無しさん
09/06/11 13:57:14
質問があります。
サムネイルベースのファイラーみたいなものを考えています。
サムネイルをウィンドウ内でドラッグ&ドロップして配置を移動したいです。
その場合、ドラッグ&ドロップの処理で必要なことは…。
・コントロール(pictureBoxとか)をドラッグ可能にする。
・フォームでドロップを受け付けるようにする。
かと思います。

フォームでドロップを受け付けるのは、
・AllowDropプロパティをTrueにする。
・Form1_DragEnterのイベントハンドラを作る。

でよいかと思うのですが、
Q1 コントロールをドラッグ可能にするには、なにをすればいいんでしょう?
コントロールを移動すると、コントロール同士が重なることがあります。
そのとき、
Q2 単純に重ねて表示したいときには、イベントハンドラはForm1_DrogEnterだけでいいんですか?


394:デフォルトの名無しさん
09/06/11 14:07:54
Control.DoDragDrop使え

395:デフォルトの名無しさん
09/06/11 14:16:26
>>392
>TextBoxそのものの自作
ユーザーコントロールじゃなくてControlから直接派生するカスタムコントロール
描画も入力も全部自前で書くガチ自作

396:デフォルトの名無しさん
09/06/11 15:12:59
継承ってのは機能の追加しかできないの?

たとえば
myclass1が10個の変数と3個の関数を持ってるとして
それを引き継いだmyclass2は
7個の変数と4個の関数を持ってるとか
できない?

397:デフォルトの名無しさん
09/06/11 15:13:24
myclass2をmyclass1として扱いたい場合どうするんだ

398:デフォルトの名無しさん
09/06/11 15:16:31
object思考の基礎をやり直したほうがいいんじゃないか?
myclass1やmyclass2をちゃんとobjectとして切り出せてないからややこしくなる。

399:デフォルトの名無しさん
09/06/11 15:22:34
>>396
そういう場合はclass1とclass2から共通な部分を取り出して新たな基底クラスを作るのがデフォ


class1 - class2

↓こうする

baseclass - class1
       |_class2


基底クラスのメソッドやフィールドを消せたりら、上位クラスへのキャストができないのだわ
FileStreamをStreamにキャストしたりとかね

400:デフォルトの名無しさん
09/06/11 15:55:18
Office2007が入ってるとTextBoxRendererやVisualStyleRendererのTextBoxが標準のルックスじゃなくなるんだけどどうすればフォームに配置しているTextBoxと同じ用に描けるの?
Application.EnableVisualStyles()をコメントアウトってのはナシで。
この際Win32APIでもなんでもいいから教えて。


401:デフォルトの名無しさん
09/06/11 18:51:26
画像の移動の件です。
「Control.DoDragDrop」でぐぐって、
解説サイト見ながらプログラムを作ってみたんですが、
完全にどつぼにはまってます。
どっかにプロジェクトをアップロードしたら、このスレで添削してもらえますか?


402:デフォルトの名無しさん
09/06/11 18:54:01
ListViewじゃダメなの?

403:デフォルトの名無しさん
09/06/11 19:05:01
ListViewだと、表形式での表示になると思います。
エクスプローラでいうところの表示-縮小版のような形で操作したいのです。


404:デフォルトの名無しさん
09/06/11 22:02:37
C#で他のプロセスのコマンドライン引数を取得したいのですが、
なにか方法ありますか?
たとえばWordのプロセスが開いているファイルのPath+FileNameを取得したい。

405:デフォルトの名無しさん
09/06/11 22:11:41
>>404
URLリンク(d.hatena.ne.jp)

406:デフォルトの名無しさん
09/06/11 22:13:11
>>405
 ありがとう!

407:デフォルトの名無しさん
09/06/11 22:24:33
WMIでWin32_Process使うのが一番楽な希ガス

408:デフォルトの名無しさん
09/06/12 09:58:49
>>399
それがいい場合もあるが、まずそれというのはおすすめ出来ない。


409:デフォルトの名無しさん
09/06/12 10:15:09
そういうことになるから継承は良くない

410:デフォルトの名無しさん
09/06/12 11:05:24
他のアプリケーションのIMEの状態を取得したいのですが、
なにか良い方法ありませんか?
すでにC#ではないと思いますが。。。

411:デフォルトの名無しさん
09/06/12 11:10:54
よくわかんないけどプロセスにアタッチしてImmなんちゃら関数で取れないかな

412:デフォルトの名無しさん
09/06/12 12:51:20
LAN内の別のマシン(実行マシン)で実行中の実行ファイル(exe)をバージョンアップするときに、開発マシンからコピーして上書きしたいのですが、実行中なのでロックされていてできません。
ロックせずに実行する実行ファイルを作ることってできるんでしょうか?
あるいは、開発マシンからkillするのでもよいのですが、そんなことってできましたっけ?
あまりC#とは関係ないかも…。


413:デフォルトの名無しさん
09/06/12 13:16:10
>>412
できない。Unixだと上書きだけならできるが(再起動はもちろん必要)

で、基本常に実行し、必要なときに落としたりできるのがWindowsのサービスの仕組み。利用しない手はない。
リモートデスクトップで直接終了作業する手はどうだ?

414:デフォルトの名無しさん
09/06/12 13:32:18
なるほど。そこでリモートデスクトップですね。
なるほど〜。
サンクス。
いまも別のマシンが別の階の別の部屋にあって、デバッグしながらいったりきたりで、いい運動になってました。


415:デフォルトの名無しさん
09/06/12 13:35:05
>>405
これって、C++(?)のコードですよね?
C#のコードor dll or exeはないですか?

416:デフォルトの名無しさん
09/06/12 13:37:33
かまわずWMIというかSystem.Management.Instrumentation使えばいい

417:デフォルトの名無しさん
09/06/12 14:05:49
Instrumentationいらないだろ

418:417
09/06/12 14:12:12
using System.Management;

ManagementClass m = new ManagementClass("Win32_Process");

foreach (ManagementObject o in m.GetInstances()) {
object c = o["CommandLine"];
if (c is string) {
Console.WriteLine((string)c);
}
}

こんなもんだろ。何か異議ある?

419:デフォルトの名無しさん
09/06/12 14:34:46
>>415
C#の相互運用機能を使ってC#に書き換えればいいじゃん
>>405にC++でしか実現できない点は1つもないよ

それができいなら、おとなしくWMI使っとけ

420:デフォルトの名無しさん
09/06/12 16:30:48
>>418
ぜんぜん異議なし。
>>419
は〜い。おとなしく使ってます。

それはそれとして、相互運用機能なんてので、C++のコードをC#に書き換えられるんですか?
知らなかった…。
それって簡単?


421:デフォルトの名無しさん
09/06/12 16:41:16
>>405のコード読めるならそんなに難しくはない
そうでないなら諦めろ

422:デフォルトの名無しさん
09/06/12 18:17:03
>>411
アタッチについて少し調べたんですが、
スレッドのアタッチは出来そうだけど、プロセス?(たとえばWordなど)に
アタッチって出来ます?

423:デフォルトの名無しさん
09/06/12 19:16:40
サンプルコードを読んでいたら、以下のような記述が出てきたんですけれど、
コンストラクタを呼んで、 { } で括って最後に;って何なのでしょうか?
コンストラクタの内容に追記しているんでしょうか?
匿名関数とか記法の名前が分かればググれるんですけれど、
何と呼ばれる記述法何でしょうか?

public ActionResult Create(int customerId)
{
 AddressViewData addressViewData = new AddressViewData()
 {
  CustomerId = customerId
 };
 return View(addressViewData);
}

424:デフォルトの名無しさん
09/06/12 19:24:32
勘でググってたらあったー
オブジェクト初期化子ですかね。

425:デフォルトの名無しさん
09/06/12 19:27:47
うん

426:デフォルトの名無しさん
09/06/12 19:33:03
>>423
確かに、これはものすごい気持ちの悪い書き方だな。
ぱっと見ではなぜnew AddressViewData()のところにセミコロンがないのかが分からないし、
ブレースのあとでセミコロンがあるのかが分からない。

オレならまず間違いなく
new AddressViewData() {
...
};
にするだろうな。

427:デフォルトの名無しさん
09/06/12 19:36:58
趣味の自慢か?

428:デフォルトの名無しさん
09/06/12 19:49:07
そういう宗教論争はこっちで頼むわ。
スレリンク(tech板)

429:デフォルトの名無しさん
09/06/12 21:07:07
Form2 frm2 = new Form2
とかやって、新しいフォーム作成したら
Form2.csができちゃって
Form1.csで作ったpublic変数とかが使えなくなっちゃうんだけど
どうやったらForm1.csとForm2.csの変数や文字列を合体できる??

430:デフォルトの名無しさん
09/06/12 21:08:53
引数にして渡せ

431:デフォルトの名無しさん
09/06/12 21:09:20
Form1.cs.Concat("Form2.cs")

432:デフォルトの名無しさん
09/06/12 21:52:51
変数と文字列を同じ次元で語るなよ

433:デフォルトの名無しさん
09/06/12 22:11:28
>>429
> Form2 frm2 = new Form2
> とかやって、新しいフォーム作成したら
> Form2.csができちゃって

面白い。新しいリフレクションだなw

434:デフォルトの名無しさん
09/06/12 22:46:29
>>429
まじめに勉強してこなかったツケがそれだよっ!

435:デフォルトの名無しさん
09/06/12 23:01:33
しばらくRubyやってて久々にOffice用のCOM参照DLL作ることになったんだけど
インスタンスの作り方すら忘れてる俺涙目w

436:デフォルトの名無しさん
09/06/12 23:26:08
日記帳

437:デフォルトの名無しさん
09/06/12 23:47:00
overrideって何のためにあるの?

438:デフォルトの名無しさん
09/06/12 23:50:00
>>437
明示しないとオーバーライドできなくするため。
オーバーライドするつもりなかったのにうっかりやっちゃったとかになると、
結構発見しずらいバグになる。

439:デフォルトの名無しさん
09/06/12 23:53:17
どうしてoverrideという概念があるかというレベルに見えるが

440:デフォルトの名無しさん
09/06/12 23:55:41
継承はバグの温床だからな、安全装置は沢山あった方がいい

441:デフォルトの名無しさん
09/06/13 00:04:42
現在のオブジェクト指向に関する理解から考えれば、overrideは要らない
仮想テーブルは自前でも作れる、ただ面倒臭いから言語の機能としてあれば便利だというレベルになっている。
また言語仕様で作られる仮想テーブルは書き換える事はできないが、そのような操作が必要になったら結局自前で作るわけだが、
それはStrategyパターンと呼ばれるデザインパターンでパターン化されている。

442:デフォルトの名無しさん
09/06/13 00:23:56
>>441
これ
> 現在のオブジェクト指向に関する理解
と、これ
> 仮想テーブル

って、全然領域違う言葉だよね?
何で混ざってるの?

443:デフォルトの名無しさん
09/06/13 01:13:12
使う人間が完璧なら不要
実際Javaなんかで問題が出たから付けるようにしてるんだよ
そのJavaですらoverrideを明示的に付けるようになった

444:デフォルトの名無しさん
09/06/13 02:59:00
多数の変数を一気に同じ値にすることできねーの?

int a;
int b;
int c;
〜〜
int z;

a=2;
b=2;
とかじゃんく
a,b,c,d,e=2;
みたいな感じで。

445:デフォルトの名無しさん
09/06/13 03:04:23
>>444
カンマじゃなくて、イコールでつないでご覧。

446:デフォルトの名無しさん
09/06/13 04:30:26
File.WriteAllText(@"C:\Test.txt", "テスト書込。", sjisEnc);
この、C\Test.textの前にある@マークは何の役割でしょうか?

447:デフォルトの名無しさん
09/06/13 04:31:37
@があると\でエスケープしない
"C:\\Test.txt"とすべきところを@"C:\Test.txt"で済ます

448:デフォルトの名無しさん
09/06/13 04:34:31
>>447
ありがとう

449:デフォルトの名無しさん
09/06/13 10:19:43
>>442
>どうしてoverrideという概念があるかというレベルに見えるが
に対しての見解なので

450:デフォルトの名無しさん
09/06/13 10:43:36
>>441
ん、んーん?


451:デフォルトの名無しさん
09/06/13 10:59:33
overrideがないと、関数名を考えるのが面倒じゃん
MyFunction( )
MyFunction_int(int n)
MyFunction_intint(int n, m)
MyFunction_intstr(int n, string t)
とか、どんどん増える

452:デフォルトの名無しさん
09/06/13 11:00:19
overloadと勘違いして奴がいる模様。

453:デフォルトの名無しさん
09/06/13 12:06:15
overloadと勘違いして奴がいる模様。

454:デフォルトの名無しさん
09/06/13 12:13:18
c#の入門用ページ、
どこもコンソールアプリケーションのことしか書いてないんだけど
WIndowsプログラムのこと書いたページで良いとこない?

455:デフォルトの名無しさん
09/06/13 12:16:23
>>454
言語自体の入門ページだと、そりゃそんなもんだろ。
Windows Forms とか WPF でググりなおした方がいいんでは。

あと、コンソールアプリで入門記事書いてるページでも、
1ページくらいは GUI に記事さいてないか?

456:デフォルトの名無しさん
09/06/13 12:18:02
そりゃ、C#の入門であって、.NETでGUIプログラミングをするための入門では
ないから、仕方ないのでは?
前者はもう充分だから、後者に移りたいというのが質問の趣旨?
それとも、前者も後者もいっしょくたにしたいという話?

いっしょくたはおすすめできないぞ。

457:デフォルトの名無しさん
09/06/13 12:29:13
GUIプログラミング=IDEの使い方だし、めんどくさいだろ?作るの。

458:デフォルトの名無しさん
09/06/13 12:38:46
俺はClass personから継承してtaroをつくるとかどうでもいいことじゃなくて
たとえばだが
Form1のx=200,y=300のドットの色を取得して
画面を塗りつぶすとか
そういうことやりたいんだが

コンソールアプリじゃそういうことわからん。
IDEつくるのめんどくさいのか;;

459:デフォルトの名無しさん
09/06/13 12:42:42
>>458
どうでもいいけど
> Class personから継承してtaroをつくる
これは気持ち悪い
taroっていう種族がいるのか…?

460:デフォルトの名無しさん
09/06/13 12:44:53
>>458
class Taro キモすww

それは置いといて、
そういう話の場合、「入門」じゃなくて「サンプル」でググって、
説明読むんじゃなくてコード読む方がオススメ。

461:デフォルトの名無しさん
09/06/13 12:46:01
別に居ても居なくてもどうでも良いな
3年を継承して山田を作るのに山田って組があるのか?とか
マジでどうでも良い

462:デフォルトの名無しさん
09/06/13 13:11:29
ちょっと力ぬけよ

463:デフォルトの名無しさん
09/06/13 15:40:08
メモリの解放のタイミングについて教えてください。

フォーム上にDataGridViewとComboBox(DropDownListとして利用)、
Buttonがあるとします。
ButtonをクリックするとComboBoxのSelectedIndexによってDataGridViewの
内容が変わります。DataGridViewはReadonlyです。

現在、初期化としてフォームのコンストラクタのInitializeComponent()の後で、
それぞれDataTableを取得して、ComboBoxとDataGridViewにバインドしています。

DataGridViewはReadonlyなので、
using(DataTable dt = …)
{
  // 処理
  dataGridView1.DataSource = dt;
}
と閉じてしまっても問題ありませんが、ComboBoxの方はusingで囲むと値が
表示されません。
その場合、comboBox1.DataSourceにセットしたDataTableはどこでDisposeすれば
良いのでしょうか?

464:デフォルトの名無しさん
09/06/13 16:01:14
Disposeはメモリの解放じゃない
DataSourceとして使用してる間にDisposeしちゃまずいだろDisposeの意味的に考えて
そのDataTableを使わなくなるタイミングだから、大体フォームが閉じるときでいいんじゃね

実用上はDataTableならDisposeする必要もないけどな

465:デフォルトの名無しさん
09/06/13 16:33:55
>>464
ぐぐって下記のページを見つけて読んできました。
URLリンク(www.atmarkit.co.jp)

大体理解できました(と思います)。
リンク先もさらに読んできます。

466:デフォルトの名無しさん
09/06/13 23:54:15
内容が等しいことを示すにはどうしたらいいでしょうか?

class test{
int a;
int b;
}

test x1=new test();
test x2=new test();

x1.a=10;
x2.a=10;
x1.b=20;
x2.b=20;

if(x1==x2)
//等しいと表示
else
//等しくないと表示

クラスは参照型なので等しくないって表示されちゃうことはわかるんだけど
クラスの内容自体を比較するのはどうやんの?

467:デフォルトの名無しさん
09/06/13 23:55:46
IComparer

468:デフォルトの名無しさん
09/06/14 01:16:18
>>466
==,!=オーバーライド

469:デフォルトの名無しさん
09/06/14 01:19:37
>>466
x1.a == x2.a && x1.b == x2.b
というかそれ、public ないから普通にコンパイルエラーにならんか?

そのクラスを値チックにしか使わないなら Equals とか GetHashCode とか
オーバーライドして operator ==/!= 定義する。IEquatable は・・・この場合は
まぁいいか

470:デフォルトの名無しさん
09/06/14 03:19:03
GetHashCodeはオーバーライドしとけ。


471:デフォルトの名無しさん
09/06/14 03:52:16
GetHashCodeってどんなときに呼ばれんの?

472:デフォルトの名無しさん
09/06/14 04:48:38
Hashtable
Dictionary

473:デフォルトの名無しさん
09/06/14 04:48:54
Dictionaryにキーとして放り込む時とか

474:デフォルトの名無しさん
09/06/14 13:10:04
列が100、行数が20というデータテーブルを作ってDataGridViewで表示してるんですが、
ボタンをクリックするとテーブルに対してColumns.Addで列数を増やすように作ったんだけど、
なぜか1列増やすごとに1秒ぐらいかかる。
ぐぐったら「Debugは遅い」って書いてあるのを見つけたんでReleaseに変えてみたけど、
それでも0.7秒ぐらいかかってるみたい。

ボタンをクリックしてから画面が更新されるまで、ちょっとタイムラグがあるのが気になるんだけど、
もっと高速に列数を増やす方法はないですか?
マシンはPen4/2.8GHzにメモリ2GBで、極端にマシンが遅いわけでもないと思うんですが。
OSはXP SP3に無料のC#2008 NET3.5です。

475:デフォルトの名無しさん
09/06/14 13:11:11
あ、データテーブルの中身はintです。

476:デフォルトの名無しさん
09/06/14 13:20:18
追加に時間がかかってるのか、再描画に時間がかかってるのか、
どっち?

477:デフォルトの名無しさん
09/06/14 13:59:15
どっちかわかりません。
追加すると自動的に再描画されてしまうと思うのですが、
どうやったら別々に調べることが出来ますか?

478:デフォルトの名無しさん
09/06/14 14:04:08
Stopwatchクラスで時間計ってみ

479:デフォルトの名無しさん
09/06/14 16:50:00
画像を縦30横30に切り取りたいのですがどうすればいいのでしょうか?><

480:デフォルトの名無しさん
09/06/14 16:54:05
>>479
「C# 画像 切り取り」で検索すればすぐに出てくるんだけど

481:デフォルトの名無しさん
09/06/14 16:55:14
縦30、横30でコピーすればOK

482:デフォルトの名無しさん
09/06/14 16:57:06
>>48 ありがとうです0

483:デフォルトの名無しさん
09/06/14 18:24:14
パネルに編集画面を描画(Direct3D)していて、
カメラ位置を移動させるためのスクロールバーを配置したいんだけど、
1発でばしっと縦横スロールバーがつけられるコントロールってありますか?

やっぱり
親パネルの右に垂直スクロールバー配置、アンカーを上下右に設定、
親パネルの下に水平スクロールバー配置、アンカーを左右下に設定、
残った領域にスクロール操作の対象になるパネルを配置、アンカーで上下左右を設定 
みたいにしないとダメ?


484:デフォルトの名無しさん
09/06/14 21:04:31
パネルってそもそも ScrollableControl 継承してなかったか?

485:デフォルトの名無しさん
09/06/14 21:45:46
そりゃ中に大きなコントロール入れたらスクロールバー出るけど483の用途には全く適さない

486:デフォルトの名無しさん
09/06/15 05:17:28
普通、インスタンス生成するときは

Class名 名前=new Class名();
で生成できるのに

Graphicsクラスのインスタンス生成する際
Graphics gr=new Graphics();
じゃ生成できないのはなんで?
Graphics gr=CreateGraphics();
なら生成できるみたい

487:デフォルトの名無しさん
09/06/15 06:30:50
newさせたくないから。幼稚園児に油性マジック渡すようなもの。

488:デフォルトの名無しさん
09/06/15 06:50:13
幼稚園児に油性マジック渡したら
キャップし忘れてすぐだめにしちゃうよね

489:デフォルトの名無しさん
09/06/15 08:19:14
CreateGraphics()はthis.CreateGraphics()だから。

490:デフォルトの名無しさん
09/06/15 08:40:29
つまり、大人の事情でそう決まってるからとしか言いようがない。

491:デフォルトの名無しさん
09/06/15 08:54:31
大人の事情っていうと、「仕方なくそうなってる」感じがするけど、
new Graphics() できないのは仕方なくじゃなくて、その方がいい設計だからだろ。


492:デフォルトの名無しさん
09/06/15 09:21:22
でもDispose()しないといけないのは何故

493:デフォルトの名無しさん
09/06/15 09:55:13
GDIの作法を知らない世代か。

494:デフォルトの名無しさん
09/06/15 12:01:20
newとDisposeは対になるものじゃないしね

495:デフォルトの名無しさん
09/06/15 12:33:09
Dispose()はC++からのクセだろ
別にしなくてもいいし

496:デフォルトの名無しさん
09/06/15 12:51:44
やんなくてもGCが回収してくれるけど、その間リソースを持ち続ける事になるからねぇ

ファイル開こうとしたらいつまでもロックされてる とかよくある。
Closeすればいい?それならDisposeしちゃえよ。

497:デフォルトの名無しさん
09/06/15 12:58:16
>>495
ドキュメントにDispose()しろってんだからしろよ<

498:デフォルトの名無しさん
09/06/15 13:16:50
> しろよ<
よろしくにみえた

499:デフォルトの名無しさん
09/06/15 14:16:34
private void Form1_Load(object sender, EventArgs e)
()内のobject sender, EventArgs eってなんですか?

500:デフォルトの名無しさん
09/06/15 14:20:21
イベントの発生元とイベントのパラメータ

501:デフォルトの名無しさん
09/06/15 14:22:47
Loadイベントに限っていえば意味はない
イベントハンドラの引数の形式を統一するためのダミー

502:デフォルトの名無しさん
09/06/15 14:32:36
Windowsアプリケーションを製作しております。
処理に必要なデータ(CSVファイル)を、利用者側から見られないようにしたいのですが
なにか策はありますでしょうか?ご教授下さい。

503:デフォルトの名無しさん
09/06/15 14:37:10
System.Security.Cryptographyでも使って暗号化すれば
気休めだけどね

504:デフォルトの名無しさん
09/06/15 14:38:30
>>502
PC内に保存するなら簡単に見られるだろ。
見にくくしたいなら暗号化かな。
簡単な暗号でいいならxor暗号で。

505:デフォルトの名無しさん
09/06/15 14:45:17
>>502
web上に配置してsslとか

506:デフォルトの名無しさん
09/06/15 14:47:43
>>502
エロゲのセーブデータか?

507:デフォルトの名無しさん
09/06/15 14:50:33
食いつき良いなお前ら。

508:502
09/06/15 14:52:46
>>503
ありがとうございます、調べてみます。

>>504
ありがとうございます。XOR暗号、調べてみます。

>>505
Web上への配置ですか、検討してみます。

>>502
いえ、そういうのではないのですが。
そのファイルを見られてしまうとプログラム内でなにをやっているかがわかってしまうのです。

509:デフォルトの名無しさん
09/06/15 15:05:58
ファイルなんか見なくても何してるか丸見えだけどな

510:デフォルトの名無しさん
09/06/15 15:21:35
ゲームとかでネタばれになるようなのは隠したいわな

511:502
09/06/15 15:25:55
Security.Cryptographyでやってみようと思います。
本当にありがとうございました。感謝します。

512:デフォルトの名無しさん
09/06/15 15:27:12
カジュアルハックを防ぐだけならそれでいいんじゃね。

513:デフォルトの名無しさん
09/06/15 15:54:28
2次元のHashtableはつくれますか?
hash["abc"]["def"]のような。

514:デフォルトの名無しさん
09/06/15 16:05:19
Hashtable<Hashtable<T>>

515:デフォルトの名無しさん
09/06/15 16:06:45
>>514
ただし2次元ではない

もしくはそういう感じのを作ればおk

516:デフォルトの名無しさん
09/06/15 16:16:41
>>513
hasu["abcdef"]という値をキーにすれば良い

517:デフォルトの名無しさん
09/06/15 16:17:56
商用なら間違いなく仕様バグで訴えられるな。

518:デフォルトの名無しさん
09/06/15 16:18:10
>>516
そうですね、ありがとうございました。

519:デフォルトの名無しさん
09/06/15 16:18:49
>>518
hash["a"]["bcdef"]との違いがわからなくね?

520:デフォルトの名無しさん
09/06/15 16:21:27
実際は

abc = 重複のない3桁の数字
def = 重複のある1〜2桁の数字

なので、>>513さんの意見で大丈夫かなと思ったのですが。

521:デフォルトの名無しさん
09/06/15 16:22:45
すいません、>>513ではなく>>516でした

522:デフォルトの名無しさん
09/06/15 16:36:00
>>520
じゃあそれでいいんでね?

523:デフォルトの名無しさん
09/06/15 16:36:05
>>519
別に汎用でなくてもかまわない。
キーが取り得る値として辻褄が合うように適宜仕様変更すれば良いんだよ。

524:デフォルトの名無しさん
09/06/15 16:38:21
>>523
適宜仕様変更すると汎用になるんでないかい

525:デフォルトの名無しさん
09/06/15 16:38:51
てか、自分でハッシュ関数作ればいいじゃん

526:デフォルトの名無しさん
09/06/15 16:42:36
目的に最適化されたハッシュか、汎用のハッシュか、どっちが高速かと言えば前者だな

527:デフォルトの名無しさん
09/06/15 16:47:04
hash[new {Fst = "abc", Snd = "def"}]
ってできる?

528:デフォルトの名無しさん
09/06/15 16:49:45
>>527
試した?

529:デフォルトの名無しさん
09/06/15 16:50:14
>>528
試してない
だって俺C#の文法知らないもん

530:デフォルトの名無しさん
09/06/15 17:03:22
はっはっは こやつめ

531:デフォルトの名無しさん
09/06/15 17:13:00
new Dictionary {{"あ","A"},{"い","I"}}

532:デフォルトの名無しさん
09/06/15 17:15:30
<string,string>追加

533:デフォルトの名無しさん
09/06/15 17:22:05
うわぁ的なことをした人がいる
URLリンク(d.hatena.ne.jp)
var dict = Dictionary
(
    x => "foo",
    y => "bar",
    Hauhau => "gaogao"
);
C#3.5以降のはず

534:デフォルトの名無しさん
09/06/15 17:27:09
わざわざそんなキモいことしなくても531で正解なんだが

535:デフォルトの名無しさん
09/06/15 17:28:57
一番軽いのはどーれだ

536:デフォルトの名無しさん
09/06/15 17:41:11
>>534
実現方法の一つで正解ってわけじゃないけど
どうでもいいわ

537:デフォルトの名無しさん
09/06/15 18:00:02
言語に組み込むのは、手段を統一させるため
昔C#のコンセプトについてそんなコメントがあった気がする

538:デフォルトの名無しさん
09/06/15 19:48:35
VC#フォームデザイナでメニューを作ったとき、キャプションに
「上書き保存)(&S)」とか入力してからダブルクリックして
メニューの Click イベントを書こうとすると

private void 上書き保存SToolStripMenuItem_Click(object sender, EventArgs e)

ってなるのが気持ち悪くてしょうがないんだけど、
みんなちゃんと飲み込めてるの?


539:デフォルトの名無しさん
09/06/15 20:09:18
お好きなようにどうぞ
・実害はないので気にしない
・リネームする
・英語キャプションでハンドラを生成して、後から日本語に変更
・先にハンドラを用意する

540:デフォルトの名無しさん
09/06/15 20:35:12
>>513
public struct ComplexKey<X, Y> : IEquatable<ComplexKey<X, Y>>

を作ってみるのは俺だけか?


541:デフォルトの名無しさん
09/06/15 21:28:02
is演算子、 as演算子って多用すべきでない?

542:デフォルトの名無しさん
09/06/15 21:50:50
キャストと比べても、パフォーマンス的には殆ど同じだから安心して使うといい。

キャストに失敗する可能性がある場合には必ずas,isを使うべき
InvalidCastExceptionをtry-catchするような方法だと桁違いに遅い。

543:デフォルトの名無しさん
09/06/15 22:32:18
if (hoge is Foo)
{
Foo foo = (Foo)hoge;
// ...
}
個人的には、上よりは下の方がいいと思うとか、細かいことを挙げたらきりがないけどな。
Foo foo = hoge as Foo;
if (foo != null)
{
// ...
}

544:デフォルトの名無しさん
09/06/15 22:49:13
>>541
as演算子のほうがキャストより高速になる場合が多いらしい

545:デフォルトの名無しさん
09/06/15 22:55:46
まあそりゃチェックが2回になるからね。
でも、そんな差を気にしなければならないのはよほどタイトな処理の時くらいだし、
普通に書いた時変数のスコープが広がるというデメリットもあるから、
別にどっちでもいいレベルだと思うけどね。

なぜかやたらとここにこだわるやつがいて不思議。


546:デフォルトの名無しさん
09/06/15 22:55:48
上は無駄な事をしてる感じなのが気に入らない
下は変数のスコープが気に入らない

scalaのswitchが使えればいいんだけどなぁ

547:デフォルトの名無しさん
09/06/15 22:56:34
質問です。
次のような配列があったとして、HighPriceの最大値を求めたいのですが、簡潔に書くにはどう書けばいいのでしょうか?

hoge[0].HighPrice = 1000;
hoge[1].HighPrice = 780;
.(略)
hoge[99].HighPrice = 300;


環境はVisual C# 2008です。よろしくお願いします。

自分で考えたのは、
「int maxにまず初期値1000を設定、あとはforループでまわしてmaxをこえていれば新たにそれをmaxに設定する」
というものですが、もっとスッキリさせられないものかと思ってます。

ちなみに、hoge[0].HighPriceは本日(0日前)の高値、hoge[1].HighPriceは1日前の高値・・・
といった設定。100日間の高値の中で最大値を求めたいんです。

548:デフォルトの名無しさん
09/06/15 23:02:07
>>547
LINQ使って
int max = hoge.Max();

549:デフォルトの名無しさん
09/06/15 23:11:18
HighPrice メンバみたいだから
int max = hoge.Select((x) => x.HighPrice).Max();
だな

550:549
09/06/15 23:15:05
あ、Max にはセレクタ指定できるのかごめん

int max = hoge.Max((x) => x.HighPrice);

かな

551:デフォルトの名無しさん
09/06/15 23:15:35
hoge.Max(x => x.HighPrice)
みたいな?


552:デフォルトの名無しさん
09/06/15 23:16:33
あ、カッコいったか、普段あまり使わないから分からなくなるよ。


553:デフォルトの名無しさん
09/06/15 23:21:10
なくてもいいと思うよ。俺は見易さと統一性でいつもつけてる
だけ。けど好みの問題だろうな。


554:547
09/06/15 23:27:57
みなさんレスありがとうございます。
>>550さんので無事できました。

LINQだとだいぶ楽に書けていいですね。
手元のC#本は古いせいかLINQについては載ってないので新版を買ってくるとします。
ありがとうございました!

555:デフォルトの名無しさん
09/06/16 01:24:51
c#で
class Test{
}
という何もないTestクラスを作って
Test test=new Test();
ってやって、

Label1.Text=test.ToString();
ってやったら宣言してないはずのTostring()が実行されるんだけど
クラスって宣言しなくても勝手にObject型を継承するようになってんの?

556:デフォルトの名無しさん
09/06/16 01:25:46
URLリンク(msdn.microsoft.com)

557:デフォルトの名無しさん
09/06/16 01:42:47
>>556
くそ真面目に継承階層にずらずら並べてるのがちょっと微笑ましい

558:デフォルトの名無しさん
09/06/16 01:49:59
>>557
スクリプト切っててわからなかった
これはひどい

559:デフォルトの名無しさん
09/06/16 01:50:21
2,768個・・なぜ並べたww

560:デフォルトの名無しさん
09/06/16 01:50:58
>>555
クラスどころかC#ではありとあらゆる型がobject継承してる。

561:542
09/06/16 08:28:40
安心して使うことにする。
みんなありがとう

562:デフォルトの名無しさん
09/06/16 13:07:53
>>556
クソワロタ

563:デフォルトの名無しさん
09/06/16 15:27:42
なんでわざわざ
Program.csとForm.csに分割してるんだ

Program.csは
Main関数の中に
Application.Run(new Form1)
みたいな産業あるだけだし・・・
意味不明

564:デフォルトの名無しさん
09/06/16 15:30:27
意味などないんだよおおおおおおおおおおおお!!!
うふっ

565:デフォルトの名無しさん
09/06/16 15:31:25
なるべくpublicなクラスは分割した方が管理しやすいから
フォームみたいなのだとなおさらね

関係ないけどそれを追求した結果、Javaなんかは1ファイル1publicクラスみたいな潔癖な事になっている

566:デフォルトの名無しさん
09/06/16 15:33:29
意味不明ってまじかよ。冗談はよせ。

567:デフォルトの名無しさん
09/06/16 16:47:11
foreach(item in arraylist) {
 if (削除条件(item)) {
  arraylist.Remove(item);
 }
}

てやっても大丈夫? ちゃんとインデックス使って

for (int i=arraylist.Count; i>=0; --i) {
 if (削除条件(arraylist[i])) {
  arraylist.RemoveAt(i);
 }
}
ってやらなきゃだめ?

568:デフォルトの名無しさん
09/06/16 16:48:31
あ、arraylist の中身は重複しません

569:デフォルトの名無しさん
09/06/16 16:53:09
foreach中はコレクションを変更できない

570:デフォルトの名無しさん
09/06/16 17:08:36
RemoveAllで

571:デフォルトの名無しさん
09/06/16 18:53:50
1個なら消せるよね

572:デフォルトの名無しさん
09/06/16 19:59:54
CheckedListBoxって、項目を選んでからチェックボックスをクリックしないと チェックできませんよね。
どの項目を選んでいるか関係なく、クリックしたら即チェックできるようにするにはどうすればいいですか?



次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4683日前に更新/222 KB
担当:undef