ふらっとC#,C♯,C#(初心者用) Part43at TECH
ふらっとC#,C♯,C#(初心者用) Part43 - 暇つぶし2ch262:デフォルトの名無しさん
09/08/05 19:54:54
エスパー召喚質問過ぎる

263:デフォルトの名無しさん
09/08/05 19:59:04
>>262
すみません。USBでなくURLでつ…

264:デフォルトの名無しさん
09/08/05 20:04:17
FileSystemWatcherでテキストファイルの生成を監視しているとき、テキストファイルだと、2回生成したとメッセージが表示されるのですが、原因と回避策を教えてください。
private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e){
MessageBox.Show("created!")
}


265:デフォルトの名無しさん
09/08/05 20:04:31
可能姉妹

266:デフォルトの名無しさん
09/08/05 20:09:06
>>265
出来ましたらヒントかなにかを……

267:デフォルトの名無しさん
09/08/05 20:14:10
>>266
グーグルの使い方ぐらい覚えた方がいいよ
URLリンク(www.google.com)

268:デフォルトの名無しさん
09/08/05 20:32:11
>>267
ありがとうございます。
少し甘えすぎていました。すみません。

269:255
09/08/05 20:35:04
>>256
>>257
どうもありがとうございます

皆さんはこういう場合どうしているんでしょうか?
毎回form1でガリガリ書いちゃうのかな
それとも継承したコントロールクラスを作ったりするのでしょうか?

270:デフォルトの名無しさん
09/08/05 20:46:39
DataViewを作成してRowFilterを設定しようとしています。
フォーム上のテキストボックスで入力された文字列で
「フィールド」の列をあいまい検索しようとしています。

DataView dv = new DataView(datatable);
dv.RowFilter = "フィールド like '*" + テキストボックス.Text + "*'";

この時に、特殊な文字列が入っているとエラーになります

[]%\<>+|^'"

だから、Replaceメソッドを使ってあらかじめ[]でそれらの文字をくくってやろうと
しました。

Joken = Joken.Replace("[", "ESCAPETemporary");
Joken = Joken.Replace("]", "[]]");
Joken = Joken.Replace("ESCAPETemporary", "[[]");
Joken = Joken.Replace("%", "[%]");
Joken = Joken.Replace("\\", "[\\]");
Joken = Joken.Replace(">", "[>]");
Joken = Joken.Replace("<", "[<]");
Joken = Joken.Replace("+", "[+]");
Joken = Joken.Replace("|", "[|]");
Joken = Joken.Replace("^", "[^]");
Joken = Joken.Replace("'", "''");

たのですが、くくってやるとエラーは出ないのですが検索にかかりません。
これらの文字をエスケープする方法を教えて下さい。
また、エスケープするのにわざわざReplaceでこうやって置き換える以外の方法があったら教えて下さい。

271:デフォルトの名無しさん
09/08/05 21:03:17
教えてあげないよ

     _,∩_         _,∩_           _,∩_
    (_____)ゝ、     (_____)    y     (_____)
    / :: :: :: ヽ 〉     /-‐:: ::‐-ヽ /       / :: :: :: ヽ
   _./ (・ )ll(・ ) ∨     _/  0) i! 0) ∨      _/ ( ・)i!(・ ) ゙、_
 // :: :: ∈ゝ :: ::ヽ   // ::  ‐-‐ :: ヽ    //  :: ー一 :: ヽ\
. ゝ/:: :: ::  :: :: ::ヽ  ゝ/ :: ::  ::  :: :: ヽ   ゝ/ :: ::  ::  :: :: ヽく
   ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄     ̄ ̄ | ̄ ̄ | ̄ ̄
       |     |             |     |             |     |
    ⊂!     !つ        シ!     !つ        ⊂!     !つ

ジャン♪

272:デフォルトの名無しさん
09/08/05 21:12:51
>>270
LIKE演算子に使う文字列で[]使ってエスケープする必要があるのは[*%だけだぞ
'もエスケープが必要だがこれは'をもう一つ重ねることでエスケープする
String.Replaceで良いんじゃね Regex.Replace使っても良いけど

273:デフォルトの名無しさん
09/08/05 21:13:12
コピペ君って馬鹿だな、まで読んだ。

274:デフォルトの名無しさん
09/08/05 21:32:58
>>270
そういうのはクエリのサニタイズと呼ばれる。
普通は入力値は直接テキスト処理せず、DBライブラリ側に処理させる。
C#だとどうやるのかは知らんけど、データソースオブジェクトを使ったらクエリ書く必要すらないんじゃね?

275:270
09/08/05 22:13:59
>>272
指摘されてあらためてヘルプをよく読んだら、
フィールド名に使ってたらエスケープしないといけない文字列と
データの中でエスケープしないといけない文字列は違うということがわかりました。
[*%'
についておっしゃるとおりエスケープしたらうまくいきました。
ありがとうございました。

最初に想定していたよりも文字数が減ったのでReplaceでやることにします。

276:デフォルトの名無しさん
09/08/05 22:30:34
VB厨で申し訳ないのですが、
VBのFormat、FormatNumber関数に相当するメソッドを
ご存知の方おられたら教えてください。
数値を三桁カンマ区切りにしたいというのが目的です。

277:デフォルトの名無しさん
09/08/05 22:31:41
>>276
string.Format()

278:デフォルトの名無しさん
09/08/05 22:38:11
int.ToString(string)

279:デフォルトの名無しさん
09/08/05 23:37:58
1234567890.ToString("N0")

280:デフォルトの名無しさん
09/08/06 01:34:46
foreachでbreakで抜けなくてもいい場合にbreak使わないで全部回すってどうですか?

281:デフォルトの名無しさん
09/08/06 01:40:34
言ってることがよくわからないが推測で答えると場合によるとしか言えない。


282:デフォルトの名無しさん
09/08/06 01:43:16
breakで抜けなくてもいい場合ならbreakを使っちゃダメでしょ。当然全部回る。

で?

283:デフォルトの名無しさん
09/08/06 02:07:19
一つだけ抽出する場合に決まってんだろオタンコナス!

284:デフォルトの名無しさん
09/08/06 02:11:48
エスパーでも太刀打ち出来ないだと!?

285:デフォルトの名無しさん
09/08/06 02:12:03
それならEnumerable.Firstの述語を引数に取るほうを使えばいい。

286:デフォルトの名無しさん
09/08/06 03:06:27
>>280
next

287:デフォルトの名無しさん
09/08/06 08:23:28
お前達は何を言っているんだ・・・

288:デフォルトの名無しさん
09/08/06 10:15:15
nextでふと思ったが、、、continue のことか?

289:デフォルトの名無しさん
09/08/06 10:23:46
現在、あるソフトの試用版を製作中です。
試用版ということなので、メインの機能の回数制限をつけようと思っているのですが
残り回数をレジストリに書き込んだ場合、ユーザーに書き換えられてしまう危険性がありますよね?
これをユーザーから編集不可にする方法はありますか?

290:デフォルトの名無しさん
09/08/06 10:44:33
ないよ

291:デフォルトの名無しさん
09/08/06 10:48:44
回数限定版ではなく機能限定版を考えてみてください

292:デフォルトの名無しさん
09/08/06 10:49:54
>>290
>>291
やはりそうですか。
機能限定版、もしくは正規版の機能充実に時間を使います。

ご回答、ありがとうございました。

293:デフォルトの名無しさん
09/08/06 10:52:49
暗号化すればある程度は大丈夫だけど削除されたら元も子もないし
完璧な方法はないかも

究極はそもそもその機能を入れてないバージョンを別に作ることだがそれだと試用できないな

294:293
09/08/06 10:54:09
既に回答されてて泣いた

295:デフォルトの名無しさん
09/08/06 11:36:15
ユーザーのPCはユーザーの管理下にあるから、まっとうな方法で確実なのは無理だね。
ネット使って認証とかのレベルでやらないと無理。

296:デフォルトの名無しさん
09/08/06 12:06:00
webBrowserで表示しているページをボタンクリックしたらIEで表示させる。
こんなの作りたかったけど難しい。
URLって簡単には取得できないのね。
舐めてたわ

297:デフォルトの名無しさん
09/08/06 13:01:34
現在表示されてるURLはプロパティから直接取れる。
ページ変移もNavigatingイベントで拾える。

298:デフォルトの名無しさん
09/08/06 14:18:12
>>297
例えば、グーグルとかで日本語検索したページをIEで表示させるとURLに検索文字が直接はいってしまう。
あと、フレーム分割されてるようなページだとうまくURL取得出来ないです

299:デフォルトの名無しさん
09/08/06 15:32:56
>>298
後者は WebBrowser.Document.Window.Frames.Item(int) でなんとかできると思う
前者は日本語でおk

300:デフォルトの名無しさん
09/08/06 15:53:23
URLエンコードしたいんじゃね

301:デフォルトの名無しさん
09/08/06 16:07:41
Uri.OriginalStringの事か?

302:デフォルトの名無しさん
09/08/06 16:40:12
Aというフォームを起動させて、あるボタンを押せば
Aを閉じてBというフォームを表示させたいんですが、どうすればいいでしょうか?

Aを閉じるとアプリケーション自体終了したり、AのVisibleをfalseにしたままだと
Bを閉じたときに、Aは非表示なだけで終了はしていませんよね?

303:デフォルトの名無しさん
09/08/06 16:47:22
・AはHideにしておいて、BのClosedイベントでAも終了する
・ApplicationContextを使ってMainFormを差し替える
・Application.Run(new B())する前にAをShowDialogで表示する

304:デフォルトの名無しさん
09/08/06 17:03:53
>>303
ありがとうございます。

305:デフォルトの名無しさん
09/08/06 21:09:45
c#EE2008

datagridviewを継承した独自のコントロールを
デザイナの左にあるコンポーネントに追加する方法ありますか?

コントロールのサイズを視覚的に調整したいので・・

306:デフォルトの名無しさん
09/08/06 22:01:03
>>305
なーんか言ってることが意味不明だな、と思うのはたぶん俺だけじゃないと思う。

307:デフォルトの名無しさん
09/08/06 22:13:14
>>305
同じプロジェクトならビルドすればいい
違うプロジェクトなら参照に加えればいい

308:デフォルトの名無しさん
09/08/06 22:21:58
ああ、>>307を見てやっと意味が分かった

309:296
09/08/06 22:24:07
frameはDocumentCompletedの最後にメインページが読み込まれるみたいで意識しないでいいみたいです
>>299さんのコード使わずとも何とかなりました。
ただ、JavaScriptで描画している部分はどうにもならない・・・
こればっかりは仕方ない見たいですね。

学校ではJava習ってるんで、C#を自主でやろうかな~と思ってタブブラウザもどきを作っています。

310:305
09/08/06 22:50:05
>>307
ビルドすれば左のコンポーネントのところに表示されるのですか?
継承しただけだと無理だと思うんだけど
継承したクラスを作ってその後どうすればいいんでしょうか?

311:デフォルトの名無しさん
09/08/06 23:04:20
それだけで出るけど?

312:デフォルトの名無しさん
09/08/06 23:17:00
試してみたが、普通に表示されるぞ?
VS2005 Standard でだが。

using System.Windows.Forms;

namespace MyControl {
public class MyDataGridView : DataGridView {
}
}


313:デフォルトの名無しさん
09/08/06 23:18:08
ふと・・・public付け忘れなんてオチは却下だ。

314:デフォルトの名無しさん
09/08/06 23:28:22
DataGridViewを継承って使い道が全く思いつかないんだが
外から弄り放題だからコンポーネントとしては失格だし

315:296
09/08/07 00:12:14
>>309
JavaScriptか・・・
専門学校のときに似たようなの作らされたっけ
なんか、

url = e.Url.ToString();

これでurlを取得しようとしたら、なんかJavaScript:false:
こんなわけ分からん値が取得してた気がする。面倒になって他の奴に投げたがなんだったんだろう。

316:デフォルトの名無しさん
09/08/07 00:28:08
WPFで、一般的なペイントツールを作ろうと思ったら、カンバス部分はどう実装するの?
はじめからInkCanvasが用意されてるけど、これと似た自前のクラスを作ることになるのかな

317:305
09/08/07 00:37:53
>>314
弄り放題すぎて目的の関数見つけるのが大変なんです

318:デフォルトの名無しさん
09/08/07 00:42:44
WiiRemoteについての質問です

wiiリモコンとバランスボードを制御するとき
どちらか片方ずつなら制御できたのですが
両方を同時に制御するにはどうすればいいですか?

319:デフォルトの名無しさん
09/08/07 01:21:19
個別のライブラリに関しては提供元もしくは専用のフォーラムで聞いてください。

320:デフォルトの名無しさん
09/08/07 08:18:32
DataGridViewを継承したやつって
実体はなんなの?
DLL?
Formにぺこって貼り付けるやつって、実体はなんですか?

321:デフォルトの名無しさん
09/08/07 08:25:13
>>320
フォームデザイナーは見た目をいじるだけ。
あくまで出来上がるのはC#のソースコード。
ソースコードに何が書かれているかをよく見てご覧。

いくつか質問してるが、ソースコードに全部書いてある。

322:デフォルトの名無しさん
09/08/07 09:35:02
抽象クラスとインターフェースって似てると思いますが、インターフェースで出来ないことを抽象クラスでやるってことなんでしょうか?

323:デフォルトの名無しさん
09/08/07 10:24:52
>>332
それくらいググりなさいよっ、初心者のくせにっ!
URLリンク(blog.shos.info)

324:デフォルトの名無しさん
09/08/07 10:37:34
機能は似ているが由来が違うと思えばいい。
インターフェイスという概念は必ずしもオブジェクト指向ではない。

325:デフォルトの名無しさん
09/08/07 12:09:59
>インターフェイスという概念は必ずしもオブジェクト指向ではない。
そうか?
interfaceではstaticメソッドが作れないわけだから、
interfaceを使うと出来上がるものが必ずオブジェクトになると思うんだが?

326:デフォルトの名無しさん
09/08/07 12:51:05
C#のinterfaceというキーワードは完全にクラス周辺の仕組みの一部。
ただし他から借りてきた概念だといいたいわけさ。
APIだってインターフェイスだがWin32APIはオブジェクト指向じゃないだろ。
COMやCORBAのインターフェイスになるとオブジェクト志向の風味が漂ってくる。
いわゆる分散オブジェクト。

327:デフォルトの名無しさん
09/08/07 13:25:46
どう考えてもC#のインターフェースについて聞いてるだろ

328:デフォルトの名無しさん
09/08/07 13:43:14
>>322
抽象クラスじゃできないことをインターフェースでやる場合もあるだろ
多重継承とか

329:デフォルトの名無しさん
09/08/07 21:11:20
補色ってどう作ればいいのかな。

330:デフォルトの名無しさん
09/08/07 21:15:15
>>329
補色っていってもいろいろ定義がありそうだけど、
一番普通のは単にRGBの1の補数でいいんじゃないの?

331:デフォルトの名無しさん
09/08/07 21:17:06
>>330
なるほど。thx。

332:デフォルトの名無しさん
09/08/07 23:22:32
C#でHPをローカルに保存するようなプログラムは作成可能でしょうか?
フレームに分かれていないページなら、CSSと画像などを気にしなければ簡単に作成することが出来ました。
ただ、フレーム分割されているページにも対応したプログラムの作成方法が分からず、そもそも出来るのかと頭を抱えています

333:デフォルトの名無しさん
09/08/07 23:32:40
できなかったらIEだのFirefoxだのはどんな魔法を使ってるというのか

334:デフォルトの名無しさん
09/08/07 23:36:00
テクマクマヤコンテクマクマヤコン

335:デフォルトの名無しさん
09/08/08 00:03:56
WinFormsにおいて
ウィンドウがリサイズされたとき
子のコントロールがそれに合わせてリサイズしたり移動したりするには
どうすればいいでしょうか

336:デフォルトの名無しさん
09/08/08 00:06:39
抽象的で答えにくいが
取り敢えずDockとかAnchorとかを使うとか

337:デフォルトの名無しさん
09/08/08 04:05:46
ひょっとして
Image img = Properties.Resources.Image1;
のように、画像リソースを取得した場合って
img.Dispose();
しないとダメだったりする?

338:デフォルトの名無しさん
09/08/08 04:42:24
>>337
不要

339:デフォルトの名無しさん
09/08/08 04:46:44
>>338
行った場合って何か不都合が生じたりする?

340:デフォルトの名無しさん
09/08/08 06:51:29
する

341:デフォルトの名無しさん
09/08/08 09:16:54
>>333
どうやって実装するばいいのか分からず悩んでいます。

HtmlDocument doc = webBrowser1.Document ;
textBox2.Text = doc.GetElementsByTagName("html")[0].OuterHtml ;

メインページのhtmlしか取得できません。

342:デフォルトの名無しさん
09/08/08 09:20:52
frameタグを見ろ

343:デフォルトの名無しさん
09/08/08 09:30:26
Button_Clickの内容をFormクラスに書くのっておかしくないですか?
Buttonがクリックされた時の処理はButtonが持っているべきだと思うのですが、これがVisual C#というものの特性なのでしょうか?

344:デフォルトの名無しさん
09/08/08 09:30:30
DOM に window.frames があるんだからそっちのほうがいいだろ

345:デフォルトの名無しさん
09/08/08 09:33:00
>>343
ん?Controlだろ?

346:デフォルトの名無しさん
09/08/08 09:35:06
>>343
全然おかしくない。いわゆる「処理の移譲」ってやつ。
JavaをはじめほとんどのGUIライブラリはこの考え方をもとにして設計されている。

347:デフォルトの名無しさん
09/08/08 09:56:22
つまり、機能毎に新しいButtonカスタマイズクラスを書け、ということだろうか

348:デフォルトの名無しさん
09/08/08 10:04:36
Buttonは「クリックされた」を検知するだけのもので,具体的な処理を行うのはフォームだろ。
単純に考えれば,ボタンがクリックされたらButtonがフォームの「ボタンが押された時の処理」
を行うメソッドを呼び出すのが自然だけど,それではButtonが特定のフォームに依存してしまうので
それをうまく切り離すのが「委譲」の考え方。

349:デフォルトの名無しさん
09/08/08 10:14:36
>>343
マウスがクリックされたときの動作を
ココのアプリケーションが実装するのはおかしいって言ってるようなもんだぞ。



350:デフォルトの名無しさん
09/08/08 10:21:14
>>343は良い質問
初心者ではなさそうだけど

351:デフォルトの名無しさん
09/08/08 10:29:36
まあ、「家=Form」だけあっても、「ドア=Control」が無ければ
「家に入る=Event」というのは実現できないわけだし、
「ドア」単体には、そもそも「家に入る」というイベントを実現することは出来ない
というわかるようでわからない説明してみる

352:デフォルトの名無しさん
09/08/08 11:02:31
昔のjavaのAWTが確か派生クラスで処理を書く形式じゃなかったかな?
で欠点が多かったから委譲モデルに変更された。
C#というか.NETのイベントはまさに委譲モデル。


353:デフォルトの名無しさん
09/08/08 11:30:51
>>342
>>344

各フレームの情報が見たいのではなく、あくまでしたいのはwebbrowserで表示しているページのローカル保存です。

WebページをMHT形式(.mhtファイル)で保存するには?[C#、VB]
URLリンク(www.atmarkit.co.jp)

こんなの見つけたのでもう少しがんばってみようと思います

354:デフォルトの名無しさん
09/08/08 11:36:25
取り敢えずHTMLの仕組みぐらいは知っといた方が良いよ

355:デフォルトの名無しさん
09/08/08 11:51:09
>>354
あぁ、何か的外れなことをしようとしてるみたいですね。私。

VBAで表計算の自動化くらいしかしたことがなく、突然webのダウンロードソフトを作ってといわれてかなりテンパっています。
少し落ち着いて、考え直していこう「と思います。

理想。
1,IEの名前をつけて保存のようにメインページは任意の名前で保存
2,フレーム分割されているようなページの場合、それぞれを保存する。

こんな感じです。2のフレームページの保存は当然それぞれのhtml名で保存しなければいけないんですが・・・
難しいですね。プログラミングって。

356:デフォルトの名無しさん
09/08/08 12:05:45
保存するだけならばwget使えばいいじゃん

357:デフォルトの名無しさん
09/08/08 12:48:26
>>340
なんで?

358:デフォルトの名無しさん
09/08/08 13:16:39
>>357
共同風呂で他人が入っている可能性があるのに電気消す馬鹿がどこにいる

359:デフォルトの名無しさん
09/08/08 13:32:08
それは一見同じ風呂だが実は別の風呂

Resourcesの画像プロパティ参照するごとに毎回新しいインスタンスが作られてるよ
だからDisposeもやっとかないとメモリが無駄に食われる可能性がある

360:デフォルトの名無しさん
09/08/08 13:44:01
>>359
ResourceManager.GetObjectを使ってるようだから、それも不正解。
毎回は作られない。
長く使用されずにGCで回収されてしまった場合や
意図的にDisposeされた場合は再ロードが発生する。

361:デフォルトの名無しさん
09/08/08 13:54:10
>>360
Resources.Image1 == Resources.Image1
がfalse返したり、
using (var g = Graphics.FromImage(Resources.Image1)) {
    // 適当に描画
}
this.BackgroundImage = Resources.Image1
で描画がまるで無視されたりするけど?

362:デフォルトの名無しさん
09/08/08 13:59:51
>>361
下は意図的にDisposeしてるんじゃないの?

363:361
09/08/08 14:00:31
ごめんなんでもない

364:363=362≠361
09/08/08 14:01:31
>>363>>362>>361じゃない

もう寝る。

365:デフォルトの名無しさん
09/08/08 14:01:41
>>362
そりゃGraphicsはDisposeしてるがそれは全く関係ないだろ

366:デフォルトの名無しさん
09/08/08 15:10:39
どうでもいいが、”例え”は余計分らんw

367:デフォルトの名無しさん
09/08/08 16:36:28
MSDNを見た感じは>>360だけど
実際に動かすと>>359なので
同一インスタンスであるという保証も同一でないという保証もないという前提にして、
フォームのロードと同時にリソースを読み込んでフォームのメンバにキャッシュする。
Disposeはしないという使い方をしている。


368:デフォルトの名無しさん
09/08/08 16:44:21
>>365
>>367
まーその辺は、1MBくらいの大きめの画像をループで1000回くらい呼び出して
メモリの消費量がどうなるか眺めればよさそうですな。

369:デフォルトの名無しさん
09/08/09 01:10:05
webBrowserコントロールでMouseDownやMouseMoveのイベントハンドラーを実行したいのですが
規定のイベントには定義されていないみたいです。
どうにか実行できないでしょうか?

370:デフォルトの名無しさん
09/08/09 03:35:25
マイクロソフトのサイトで初心者向け10行で出来るシリーズだったと思うのですが、
デスクトップにカレンダーを表示するアプリの作成ページがあったと思うのですが、
どなたかURLを覚えている人いませんか?
探したけど見つからない。

371:デフォルトの名無しさん
09/08/09 03:39:38
>>203
インデントをずらせ!化す!!

372:デフォルトの名無しさん
09/08/09 07:54:35
サイトを見ていたら、
ソースの中に
[ReadOnly(true)]とか
 [Category("新規カテゴリ")]

という行がありました。
上記の"[   ]"
はどういうケースに使うのですか?


373:デフォルトの名無しさん
09/08/09 07:59:24
>>369
URLリンク(homepage1.nifty.com)

374:デフォルトの名無しさん
09/08/09 08:00:08
フルで入れちゃった。
h抜いてると思ってくれ

375:デフォルトの名無しさん
09/08/09 09:06:49
>>373
VBですか
何書いてるのかサッパリです^^

376:デフォルトの名無しさん
09/08/09 09:54:47
>>372
それは属性という機能。
URLリンク(ufcpp.net)

377:デフォルトの名無しさん
09/08/09 17:02:05
アドバイスお願いします。
WPFである条件のときだけチェックボックスを表示したいです。
Formとおなじように、.csに、
if ( ) checkBox.Hide();
else checkBox.Show();
と書いたところ、
'System.Windows.Controls.CheckBox' に 'Hide' の定義が含まれておらず、型 'System.Windows.Controls.CheckBox' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
といわれました。

CheckBox chetkBox = new CheckBox();
checkBox.Hide();
としてもだめでした。

checkBox.Visibility = Hidden;
では、
名前 'Hidden' は現在のコンテキスト内に存在しません。

checkBox.Visibility = "Hidden";
では、
型 'string' を型 'System.Windows.Visibility' に暗黙的に変換できません。
でした。
どうすればいいでしょう?


378:デフォルトの名無しさん
09/08/09 17:09:44
checkBox1.Visibility = Visibility.Hidden;

379:デフォルトの名無しさん
09/08/09 17:18:32
<CheckBox Name="..." 
XamlのName属性は何になってる?

380:デフォルトの名無しさん
09/08/09 17:22:24
そもそもそのコードでは checkBox というインスタンスが…
いや、何でもない。

381:デフォルトの名無しさん
09/08/09 17:32:15
>>378
ありがとうございます。
できました。


382:デフォルトの名無しさん
09/08/09 18:25:08
ひょっとして、ずれてるかもしれませんがご容赦ください。
fileSystemWatcherのファイルの生成の捕捉について教えてください。
IE7.0でファイルをダウンロードして、それを契機にアクションしたいと思います。
private void fileSystemWatcher_Created(object sender, FileSystemEventArgs e){//処理}
で監視しているのですが、ダウンロードのときだと、うまく監視できません。
別のフォルダから移動してくると、監視に成功します。
IEのダウンロードの場合は、Createdでは監視できないんですか?


383:デフォルトの名無しさん
09/08/09 18:38:58
取り敢えず名前を付けて保存時はちゃんと反応するな

384:デフォルトの名無しさん
09/08/09 19:11:32
テキストボックスのハイトやパディングを自由に指定できないのはなぜ?
見栄えのいいフォームができないじゃないか。
C#ってこの程度のもんだったんだ…。

385:デフォルトの名無しさん
09/08/09 19:13:47
WPF使うか自前で描画しろ

386:デフォルトの名無しさん
09/08/09 19:18:51
>>384
大丈夫、君ならJavaでもC++でも見栄えの良いフォームを作れないさ

387:デフォルトの名無しさん
09/08/09 19:30:16
>>383
ありがとうございます。
それでできないのですが、なぜでしょう?
もうすこし考えてみます。

388:デフォルトの名無しさん
09/08/09 19:48:53
WPFよりWindowsフォームアプリケーションが勝る点はどこですか?
…女子高なので聞いても誰も知りません。

389:デフォルトの名無しさん
09/08/09 20:15:01
.Net2.0でも動くこと。WPFはXPのsp2以降とか条件が厳しくなるので
使えるユーザーが限定されてしまうことかな。


390:デフォルトの名無しさん
09/08/09 20:24:07
殆どのユーザーはXPSP2以降なので問題なし

391:デフォルトの名無しさん
09/08/09 21:01:21
星形のウィンドウズフォームってどうやって作るのでしょうか?

392:デフォルトの名無しさん
09/08/09 21:03:15
>>389
ありがとう。
では、WPFの方がこれから主流になるのかな。

393:デフォルトの名無しさん
09/08/09 21:06:10
>>391
URLリンク(dobon.net)
ココ見ればできる

394:デフォルトの名無しさん
09/08/09 21:06:32
>>391
Regionプロパティつかう

395:デフォルトの名無しさん
09/08/09 21:08:12
>>393
そこは見ましたが多角形のフォームが作れないんですよ

396:デフォルトの名無しさん
09/08/09 21:14:50
見たけど作れないってどういう事よ

397:デフォルトの名無しさん
09/08/09 21:18:26
あれを見てわからないなら、素直にあきらめろよ。

398:デフォルトの名無しさん
09/08/09 21:26:18
うるせえだまれ

399:デフォルトの名無しさん
09/08/09 21:28:19
やだよーん

400:デフォルトの名無しさん
09/08/09 21:32:02
>>396
Point[] points ={ new Point(0, 0), new Point(100, 300), new Point(200, 400),
new Point(300, 300), new Point(200, 200)
};

System.Drawing.Drawing2D.GraphicsPath path =
new System.Drawing.Drawing2D.GraphicsPath();
path.AddPolygon(points);

this.Region = new Region(path);

こんな感じにやってみたけど

401:デフォルトの名無しさん
09/08/09 21:41:00
多角形は作れてるじゃないか

402:デフォルトの名無しさん
09/08/09 21:43:00
BorderStyle を none にしてないとか

403:デフォルトの名無しさん
09/08/09 21:43:48
ポリゴンの意味を理解しろよ。
Point[] points =
{new Point(100, 400),
new Point(300, 300),
new Point(500, 400),
new Point(400, 200),
new Point(600, 100),
new Point(400, 100),
new Point(300, 000),
new Point(200, 100),
new Point(000, 100),
new Point(200, 200)};
こんな感じ。
あと types とフォームのサイズも増やしとけよ。


404:デフォルトの名無しさん
09/08/09 21:46:47
ペンタゴンなら…

405:デフォルトの名無しさん
09/08/09 21:48:05
いろいろ作ったらさ
SS見せてほしいんだけどw

406:デフォルトの名無しさん
09/08/09 21:53:01
>>403
typesは関係ないのでは?

407:デフォルトの名無しさん
09/08/09 22:05:49
>>406
pts 配列内の対応する各点の型を指定する PathPointType 列挙体の要素の配列。
の数と、増やした点の数って一致して無くてもいいの?

408:デフォルトの名無しさん
09/08/09 22:24:43
営業日報システムをC♯で作りたいけど、
テキストボックスの高さが自由になりません。
皆さんはどう工夫してますか?

409:デフォルトの名無しさん
09/08/09 22:29:50
ふつうにやってるけど?

410:デフォルトの名無しさん
09/08/09 22:32:44
MultLineをonにしる

411:デフォルトの名無しさん
09/08/09 22:33:30
>>408
textBox.Multiline = true;

412:デフォルトの名無しさん
09/08/09 22:46:54
マルチラインをオンにして、さらに縦方向の位置を中央にすることはできますか?

413:デフォルトの名無しさん
09/08/09 22:51:39
>>412
何に対する何の位置が中央?

414:デフォルトの名無しさん
09/08/09 22:55:24
Forms に HorizontalAlignment はあるのに何で VerticalAlignment が無いんだろう・・・

415:デフォルトの名無しさん
09/08/09 22:58:26
>>413
垂直方向に対するテキストの位置。
うまく言えなくてごめん。

416:デフォルトの名無しさん
09/08/09 23:02:30
テキストボックスに垂直位置という概念は普通ないだろ
位置固定するならテキストボックス使う意味ないじゃん

417:デフォルトの名無しさん
09/08/09 23:06:47
だいたい、VerticalAlignmentが仮にあったとしてだ
常に垂直位置を中央に固定しておくと言うことは行数が増減する度に
テキストボックスの垂直方向のサイズを伸縮しなければ
追加した最後の行がコントロール内に収まらないだろ

418:デフォルトの名無しさん
09/08/09 23:19:03
それを言うなら、HorizontalAlignment にも言えることではないか?

419:デフォルトの名無しさん
09/08/09 23:20:17
常に水平位置を中央に固定しておくと言うことは桁数が増減する度に
テキストボックスの水平方向のサイズを伸縮しなければ
追加した最後の桁がコントロール内に収まらないだろ

420:デフォルトの名無しさん
09/08/09 23:25:02
ちなみに、412の言いたいことが分かるから俺も疑問に感じた。
あれだろ、Officeの縦位置。

421:デフォルトの名無しさん
09/08/10 00:38:47
>>420
そういう疑問を感じる自分に疑問を感じようよ。

目的が全然違う。
ワードやエクセルの表セルやテキストボックスは、
(最終的に印刷されることを意識した)の文字列のレイアウトを
制御するためにある。

Windows FormのTextBoxは、あくまでユーザーからの文字入力を受け付けるためのもの。

422:デフォルトの名無しさん
09/08/10 01:49:37
>>421
別に、垂直方向に中央があってもいいだろ。
目的とか関係なく。
見映えを考えたらやりにくくて仕方ないんだよ。

423:デフォルトの名無しさん
09/08/10 04:18:30
16x16の画像2000枚を描画しなきゃならんのだが、どうにも遅い。
大量の画像の描画を高速にするにはどうしたらいい?

424:デフォルトの名無しさん
09/08/10 04:28:16
描画が遅いってどうやって検証した?

425:デフォルトの名無しさん
09/08/10 04:58:02
>>424
なるほど。
試しにDrawImage無くしても時間変化しなかった。
他の要因だ。thx。

426:デフォルトの名無しさん
09/08/10 05:22:26
結局、メモリケチろうとWeakReference使ってたのがダメだったっぽい。

427:デフォルトの名無しさん
09/08/10 06:52:25
背景変えたPanelの真ん中に枠線消したTextBoxでも置けばいんじゃね

428:デフォルトの名無しさん
09/08/10 08:03:15
パネルの中にラジオボタンをたくさん配置し、けど、全て選択することも可能にすることはできますか?

429:デフォルトの名無しさん
09/08/10 08:17:25
なぜチェックボックスではだめなのかね

430:デフォルトの名無しさん
09/08/10 08:17:34
パネルの中にパネルなどを置いてその中にボタンを入れればおk

431:デフォルトの名無しさん
09/08/10 11:15:10
だから見た目を重視するならWPF使えと

432:デフォルトの名無しさん
09/08/10 12:10:37
>>429
ラジオボタンで統一させたいんです。
ところで、これからはWPFの時代が来そうですか?
今からVSを学ぶならばWPFでしょうか。

433:デフォルトの名無しさん
09/08/10 12:33:51
>>430
その方法じゃチェックを外すことは出来ないぞ。

>>432
なんでラジオボタンで統一するんだ?
複数チェックが可能ならチェックボックスにすべきだろ。

434:デフォルトの名無しさん
09/08/10 12:42:26
>>433
パネルの中にパネルを碁盤上に敷き詰めて、
1つ1つにラジオボタンを入れたらできる?

435:デフォルトの名無しさん
09/08/10 12:51:04
>>432
チェックボックスの□をラジオボタンの○にするような事が簡単にできる。
WPFやるのはWinFormsを使い慣れてからでも遅くはない。その頃にはVS2010出てるだろうしね。

436:デフォルトの名無しさん
09/08/10 12:59:34
>>428
AutoCheck = falseにすれば普通にできるよ。
まあ、常識があれば出来てもやらないし、やるべきでないと思うけど。

ただし、その場合当然Clickイベント拾ってコードでCheckedを制御する必要がある。

437:デフォルトの名無しさん
09/08/10 13:02:33
あと、ラジオボタンをコンテナの子コントロールにしない(Zオーダーを上にして、
コンテナの上に配置する)って方法もある。

まあ、これも普通はやらんよね。

438:デフォルトの名無しさん
09/08/10 17:59:17
>>434
そんなのはImageをセットしたラベルやボタンを使うことをお勧めしたい。
ラジオボタンにこだわる必要が全くない。

439:デフォルトの名無しさん
09/08/10 18:32:36
現状WPFは初心者にはお勧めできない。
必要な情報は自分でMSDN読んで調べられるようでないと無理。
それに,C#に加えてGUIデザイン専用の別の言語を覚えないといけない。

440:デフォルトの名無しさん
09/08/10 19:00:48
>>439
確かになー。
オレも大概初心者レベルだが、オープンソースの色々なプロジェクトのソースコードを眺めてるけど
WPFで書かれたフォームは見たことないな。(IronPython Studioのプロジェクトを除く)

WPFはSliverlightで必須だったりExpressionでデザインできたりって話は聞くけど……ううむ。

441:デフォルトの名無しさん
09/08/10 19:22:56
単純にうちのボロPCじゃ重いってのでやる気がな…

442:デフォルトの名無しさん
09/08/10 19:42:03
WPFの本を勃ち読みしたが、
どの本の例文にもhttp……microsoft…みたいなwebアドレスが冒頭に記載されていた。
しかし、どの本もその説明がなかった。
あのアドレスは一体何?

解説書が解説の役目を全く果たしていない。

443:デフォルトの名無しさん
09/08/10 19:46:49
それは質問なのかただの愚痴なのか?

444:デフォルトの名無しさん
09/08/10 19:49:24
XAMLの名前空間かなんかかしら

445:デフォルトの名無しさん
09/08/10 19:58:40
>>443
質問です。
あのアドレスは何を意味しているのですか?

446:デフォルトの名無しさん
09/08/10 20:01:55
>>445
URLリンク(msdn.microsoft.com)(VS.80).aspx

447:デフォルトの名無しさん
09/08/10 20:26:55
URLリンク(www.atmarkit.co.jp)

private void button1_Click(object sender, EventArgs e)
{
Rectangle rc = this.Bounds;

Bitmap bmp = new Bitmap(
rc.Width, rc.Height, PixelFormat.Format32bppArgb);
using (Graphics g = Graphics.FromImage(bmp))
{
g.CopyFromScreen(rc.X, rc.Y, 0, 0,
rc.Size, CopyPixelOperation.SourceCopy);
}
}

このような形で取得した画像をEXCELに貼り付け保存したいのですが、どのようなコードを書けばいいのでしょうか?
上記のサイトを参考に、スクリーンショットは取得でいるようになったのですが、EXCELとの連携がうまくいきません。

448:デフォルトの名無しさん
09/08/10 20:41:30
URLリンク(hanatyan.sakura.ne.jp)
VB6の記事だがまあ参考になるんじゃない

449:デフォルトの名無しさん
09/08/10 22:15:53
this.BackColor = Color.Red;
this.TransparencyKey = Color.Red;
label1.BackColor = Color.Transparent;

と設定して、
label1.Imageに黒から透明のグラデーションのPING画像を設定すると、
透明の部分が赤色になります。
どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?

450:デフォルトの名無しさん
09/08/10 22:33:47
>>449
君は自分自身でも何がやりたいのかよく分かってないのと違う?
何がいいたのかよくわからんけど。

451:デフォルトの名無しさん
09/08/10 22:39:39
で、その透明部分が何色になっていればいいんだ?

452:デフォルトの名無しさん
09/08/10 22:46:18
>>451
フォームも透明にしてるんだし透明ですよ

453:デフォルトの名無しさん
09/08/10 23:09:23
>>452
意味の分からんこと言ってないでググれ。
URLリンク(blogs.wankuma.com)

454:デフォルトの名無しさん
09/08/10 23:15:03
>>452
抜き色を赤に設定してるんだから、赤っぽい色は透過されないに決まってるだろ。

455:デフォルトの名無しさん
09/08/10 23:20:51
>>454
だからそれが出来ないのかなと聞いたんですけど?

456:デフォルトの名無しさん
09/08/10 23:23:31
>>449
真面目な話、そもそも君が何がをやりたいのかサッパリ伝わってないと思うから、
そこをきちんと分かるように説明しないと、出る答えも出ないと思うけど。

457:デフォルトの名無しさん
09/08/10 23:26:16
>>456

>どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?
>どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?
>どうにかしてlabel1を黒から透明のグラデーションで表示できないでしょうか?

458:デフォルトの名無しさん
09/08/10 23:28:47
だから453
TransparencyKeyはARGB完全一致してる色のみの透過

459:デフォルトの名無しさん
09/08/10 23:35:24
>>457
だから黒から透明のグラデーションってどういう意味だ、って聞いてるんだがな・・・
っていうか、こっちは親切心で聞いてるのにそういう態度取るのかよ。
人間のクズだなお前さんは。

460:デフォルトの名無しさん
09/08/10 23:40:26
>>457
>453 で書かれてるやりかたはお前のやり方と全然違うだろ。
ソースコード見てから話をしろ。

461:デフォルトの名無しさん
09/08/10 23:48:50
>>459
こんなん
URLリンク(uproda.2ch-library.com)

462:デフォルトの名無しさん
09/08/10 23:59:42
すいません上げなおしました
URLリンク(uproda.2ch-library.com)

463:デフォルトの名無しさん
09/08/11 00:10:23
コントロールのImageプロパティは透過色をサポートしてないんじゃ?

464:デフォルトの名無しさん
09/08/11 00:26:31
>>442
XMLもわからないのにWPFに手を出すのが間違ってる
WPFはこれまでのノウハウが通用しないし
深く理解しようとするとDirect3Dの知識が必要になったりして結構難しいんだよな

465:デフォルトの名無しさん
09/08/11 00:28:55
教えて君もそうだが、教える方も偉そうだよな
オマエら本当に分かってレスしてるのか?w

466:デフォルトの名無しさん
09/08/11 00:30:19
俺はわかってる事しかレスしない
偉いだろ?

467:デフォルトの名無しさん
09/08/11 00:31:13
>>462
ウィンドウの透明度を部分的に変える、なんてベタな方法では無理だろうね。
ググってたらこういうのがあった。
Win32APIのUpdateLayeredWindowを使うらしい。
あまりお手軽ではなさそうだ。
URLリンク(yellow.ribbon.to)

468:デフォルトの名無しさん
09/08/11 00:48:28
>>465
お前が親切丁寧に教えてやれよ。気が付いたら代わりに実装してたなんて事になっても知らんけど

469:デフォルトの名無しさん
09/08/11 06:12:44
>>442
URLリンク(www.google.co.jp)

470:デフォルトの名無しさん
09/08/11 07:57:34
一つだけ教えてやろう


471:デフォルトの名無しさん
09/08/11 08:03:36
Windowsフォームアプリケーションを作成しています。
960×680のフォームに、
パネルを3列敷き詰めて、各パネルに社員情報、商品情報、売上情報を表示させたいと思っていますが、
情報量が多く1フォームに入りきりません。
なので、各パネルを、編集時のみ大きく表示し、その間、他の非表示パネルを縮小させることにより、常に全項目を一覧把握できるようにしたいと思っています。
これは可能でしょうか?
教えてください。

472:デフォルトの名無しさん
09/08/11 08:04:50
>>471
ですが、
「非表示パネル」ではなく
「非編集パネル」のまちがいです。すみません。

473:デフォルトの名無しさん
09/08/11 08:05:43
出来ないことはないと思うよ。
でもいろいろコードごりごり書かないとだめかな。

474:デフォルトの名無しさん
09/08/11 09:26:11
WinFormsには向かないUIなのは間違いない

475:デフォルトの名無しさん
09/08/11 10:17:47
>>471
一旦表示状態をBITMAPにキャプチャして、
フォーム本体は非表示にしてから
縮小したBITMAPを表示することで切り替えたらいいんじゃね?

でも一般的なUIの動きじゃないから、
自然に見えるようになるまでにかなり試行錯誤しないといけないだろうけどね。

うまくできたらこのスレで紹介してくれ。

476:デフォルトの名無しさん
09/08/11 11:02:40
javaScropt でアコーディオンのようにクリックすると
項目がにゅーっと広がるようなのは難しいけど
ボタンを押したときにフォームの表示変えることぐらいは可能かと。

それぞれの項目のコントロール作って
それを表示・非表示(コントロールの追加・削除)でできそうだけど。

477:デフォルトの名無しさん
09/08/11 11:25:27
表示非表示じゃなくて縮小拡大よ?

WPFなら簡単だけどねー

478:デフォルトの名無しさん
09/08/11 11:58:12
PDFとかPowerPointのビューワ・エディタなんかでよくあるのとは違うかな

479:デフォルトの名無しさん
09/08/11 11:59:24
入力用のコントロール(TextBoxとかComboBoxとか)がなく、表示オンリーで、
かつ画像なしならGDI+で書いてやっても十分行けると思うけどね。

この条件を一つでも満たさないなら無謀に思える。

そんなことするより、今時LCDなんて馬鹿みたいに安いんだから
素直に画面増やした方が結局低コストで使いやすいソフトになるんじゃないのかな。

それが許されない事情があるとしても、もっと他の工夫を考えたほうがよさそうに思える。

480:デフォルトの名無しさん
09/08/11 12:25:42
教えてください

リストボックスに表示されている最上段のインデクスを取得したいです。
たとえばインデックスが10として10の取得方法です。



481:デフォルトの名無しさん
09/08/11 12:34:33
例えが例えになってねーよw
TopIndexプロパティ辺りじゃね

482:10
09/08/11 12:36:18
言葉足らずでした

リストボックスに表示されている最上段のインデクスを取得したいです。
(選択されていません)
たとえばインデックスが10として10の取得方法です。

483:480
09/08/11 12:39:34
>>481
時間差で済みません
ちょっと調べてみます



484:デフォルトの名無しさん
09/08/11 12:48:01
int i = listBox1.Items.Count;
て事じゃなくて?

485:デフォルトの名無しさん
09/08/11 12:51:14
Item[10]
じゃないの?

486:デフォルトの名無しさん
09/08/11 12:53:09
最上段じゃなくて、表示されてるアイテムの個数を知りたいなら
listbox.Items.Count

デフォルトだと最上段のindexは0になってると思う
逆に最下段だったらlistbox.Items.Count-1


表示枠に全アイテムが収まってなくて、表示されてるなかでの最上段~
とかだったらちょとめんどくさそう。

487:デフォルトの名無しさん
09/08/11 13:08:01
あぁ、やっと意味がわかった…。

オーナー描画使えばインデックスはわかるから
なんとかなりそうだけど…。
フォームに変数用意して。

488:デフォルトの名無しさん
09/08/11 13:19:44
TopIndexでいいのでは

489:デフォルトの名無しさん
09/08/11 13:36:01
あぁ、うん、そうね。

解説
初期状態では、インデックス位置 0 の項目が ListBox の表示領域の先頭に示されます。
ListBox の内容がスクロールされると、別の項目がコントロールの表示領域の先頭に示されることになります。
このプロパティを使用して、ListBox の ListBox..::.ObjectCollection 内にある、
現在コントロールの表示領域の先頭に示されている項目のインデックスを取得できます。
このプロパティを使用すると、コントロールの表示領域の先頭に当たるリスト部分に項目を配置することもできます。


490:デフォルトの名無しさん
09/08/11 15:15:17
>487

491:デフォルトの名無しさん
09/08/11 20:41:25
>>475
ある部分に配置されたパネルなどのコントロールのキャプチャを取得し、
別のパネルに表示させることはできますか?

492:デフォルトの名無しさん
09/08/11 21:41:03
>>491
質問する前にググってるよね?

確認するよ。
質問する前に検索して調べたよね?
すぐ出てきたよ!
URLリンク(www.atmarkit.co.jp)

493:デフォルトの名無しさん
09/08/11 21:49:44
>>492
491もアレだけど、それは491の要求してるものと違うでしょ。

例えばキャプチャされる側のコントロールの上に他のウィンドウがオーバーラップ
してたらどうなる?

494:デフォルトの名無しさん
09/08/11 22:10:07
Pingクラスについて質問です。

URLリンク(msdn.microsoft.com)(VS.80).aspx

>Ping クラスの同じインスタンスを使用して、複数の ICMP エコー要求を同時に生成することはできません。
>SendAsync の呼び出し中に Send を呼び出したり、SendAsync を前回の呼び出しがすべて完了する前に
>複数回呼び出したりすると、 InvalidOperationException が発生します。

とありますが、同時に複数実行する必要があります。
この場合、どうすればいいでしょうか?

495:デフォルトの名無しさん
09/08/11 22:15:30
違うインスタンス使えばいいんじゃねーの?

496:デフォルトの名無しさん
09/08/11 22:25:06
別のインスタンスを使えばいいんじゃね?

497:デフォルトの名無しさん
09/08/11 22:53:51
>>492
ヤフッていました。
ググってはいませんでした。
めんぼくないです。

498:デフォルトの名無しさん
09/08/11 22:55:15
>>492
あるフォームだけをキャプチャできるのかな。
15インチでも17インチでも。

499:デフォルトの名無しさん
09/08/11 22:56:09
>>492
パネルだけをキャプチャできるの…?
座標を指定すればいいのか
(-_-;)。

500:デフォルトの名無しさん
09/08/12 23:55:39
>>497
ビングれ

501:デフォルトの名無しさん
09/08/13 03:29:45
WPFで画像ビューア作ってるんだけど、Imageに入れた画像を拡縮するのって
RenderTransformを使う以外にいい方法ありますか?

502:デフォルトの名無しさん
09/08/13 03:33:59
ImageのWidth/Height設定するだけでも変わっちゃったりするが

503:デフォルトの名無しさん
09/08/14 00:14:22
DataTableの列は型指定していますので、代入時は型があっていなければ
いけないのに、取り出すときはobject型で返すためいちいちキャストして
やらないといけません。
何でこんな仕様になっているのでしょうか?
指定した型どおりに返してくれれば楽なんですが。

504:デフォルトの名無しさん
09/08/14 00:24:31
typedDataTable[rowIndex].名前
とか普通に型指定で取得できるけど

505:デフォルトの名無しさん
09/08/14 00:37:00
>>504
そんな方法があったのですね・・・。
ありがとうございました。

506:デフォルトの名無しさん
09/08/14 01:09:10
>>502
ああ、確かに。簡単に変えられますね。

画像の拡大縮小、移動を出来るようにしました。ズームする際にクライアント領域(Canvas領域)の真ん中を
中心点に置くようにして、実際に等倍の状態ではうまく動くようになったのですが、
縮小したあと適当に移動して、ズームすると想定外の動きをします。
MainImage.cs中の
cp = new Point(cnvs.ActualWidth / 2, cnvs.ActualHeight / 2);
ip = cnvs.TranslatePoint(cp, this.Image);
で、Point型ipにおかしな値が入るのでこれが臭いのですが、いまいち原因がつかめません。
↓文章ではうまく説明できないのでソース見てください・・・
URLリンク(www.42ch.net)

507:C ◆qfIRlkSVxbFr
09/08/14 08:35:53
質問お願いします
vista + C# express edition + excel2007です
参照設定で参照の追加でcom タブでmicrosoft excel5.0をみると
microsoft excel5.0 ?????????? と出てるんですけど・・・
これって一体・・・・2007以前のexcel入れれば治るのでしょうか?
XP + C# express edition + Excel2003 の環境では、オブジェクトライブラリ(半角カナ)と読めるのですが
これってVistaのバグですか?

508:デフォルトの名無しさん
09/08/14 11:02:41
Graphics.MeasureString で文字列を表示するのに必要な幅を取得できますが、
逆にコントロールの幅から表示できる文字数を取得する方法ありますか?

1文字づつ増やしながら、幅がコントロールの幅を超えるまでループする方法
だと遅くて使い物になりませんでした。


509:デフォルトの名無しさん
09/08/14 11:14:06
MeasureString(String, Font, SizeF, StringFormat, out Int32, out Int32)
つかえばいいよ

510:デフォルトの名無しさん
09/08/14 11:14:54
>>508
等幅フォントなら自分で計算できる。
等幅フォントじゃないなら、文字数なんて表示する文字依存だから計算不能。

511:デフォルトの名無しさん
09/08/14 11:32:31
C#の文法解説本読み始めて3日目です。

VC#向けの代表的な関数ライブラリ?の
系統図(クラスツリー?)見ないなのが解説してあるサイトありませんか?

512:デフォルトの名無しさん
09/08/14 11:45:44
byteを簡単に暗号と復号しようと思ったのですが復号できません。
どうして復号できないのかきっと間抜けな漏れに教えてください。

public byte[] ByteXor(byte[] dat, byte[] account, byte[] password)
{
int len_data = dat.Length;
int len_account = account.Length;
int len_password = password.Length;

for (int i = 0; len_data > i; i++)
{
int ap = i % len_account;
int pp = account[ap] % len_password;
dat[i] = (byte)(dat[i] ^ password[pp]);
}
return dat;
}

513:デフォルトの名無しさん
09/08/14 12:02:12
>>508
どうしてそんな値を取得する必要があるんだろう。
必要だと思い込んでるだけじゃないのかな?
普通はいらないと思うけど。

514:デフォルトの名無しさん
09/08/14 13:02:46
>>512
試しけど問題なく復号できたぜ

string dat = "これをみられたらわれわれはおしまいだ";
string account = "名無しさん";
string password = "秘密";
byte[] crypt = ByteXor(
Encoding.Unicode.GetBytes(dat),
Encoding.Unicode.GetBytes(account),
Encoding.Unicode.GetBytes(password)
);
string decrypt = Encoding.Unicode.GetString(ByteXor(
crypt,
Encoding.Unicode.GetBytes(account),
Encoding.Unicode.GetBytes(password)
));
MessageBox.Show(decrypt, "hoge");

515:デフォルトの名無しさん
09/08/14 13:07:35
>>512
俺も問題なく複合化出来た。
あと、関数内で引数のdatを書き換えてreturnしてるけど意味あるの?

516:デフォルトの名無しさん
09/08/14 13:10:26
StringBuilder.Appendが自分自身を返すようなモンじゃね

517:デフォルトの名無しさん
09/08/14 13:15:42
>>514-515
関数を書き換えて色々と試していた関係で復号の時のアカウントとパスワードを
反対にしていたのを忘れていました。関数内に問題ないならその前だと思って
見直したら・・・本当に間抜けでした。

すいません。

引数のdatを書き換えているのは関数書き換え前の名残ですがdatの長さが
変わらないとはいうもののやはり新規にbyteを作った方が気持ち良いですよね?。
そうします。

518:508
09/08/14 13:22:09
>>509
即答ありがとう。
詳しいね。感謝。

519:デフォルトの名無しさん
09/08/14 15:25:08
グローバルな変数として宣言されているDataSet dsがあって、とあるプリベートな関数
内でdsを使いまわしたい場合、

---
ds = new DataSet();

/* ds に値を詰め込んだり計算したりする処理 */

ds.Dispose();
ds = null;

ds = new DataSet()

/* ds に別の値を詰め込んだり計算したり */
---

と言う感じで Dispose & null で良いんでしょうか?
それとも上記の方法だとメモリー上にゴミが残ったりしますか?



520:デフォルトの名無しさん
09/08/14 15:52:33
>>519
次の値をすぐに代入してるならnullをセットする意味はない。
ただDataSetはなぜかIDisposableなんだよね。なにやってるんだろ。

521:デフォルトの名無しさん
09/08/14 23:03:01
Mainメソッドや、それを含むクラスは必ずpublicにすべきなんでしょうか?
publicを付けてる人と付けていない人が混在していて混乱しています

522:デフォルトの名無しさん
09/08/14 23:10:32
>>521
C#はしなくていい。しないほうが推奨。

523:デフォルトの名無しさん
09/08/14 23:16:44
それをエントリーポイントとして以外に参照することはまずないと
思うので隠すのが個人的にはいいと思うが、好みな気もする。

とりあえずエントリーポイントを公開しなければならないという
制限は .NET にはない。まぁ逆にある言語があるからその感じで
public にする人もいるって話だな。

524:デフォルトの名無しさん
09/08/14 23:36:38
DataGridViewのDataSourceにDataTableをセットしています。
DataGridViewになにも設定しないと、DataTableのcolumn名が
ColumnHeaderとして表示されます。
これと同様のことをRowHeaderにも行いたいのですが、例えば
最初の列をRowHeaderとするというような指定はできるのでしょうか?

525:デフォルトの名無しさん
09/08/15 01:01:53
RowHeaderに何表示したいわけ?

526:デフォルトの名無しさん
09/08/15 01:23:49
>>525
DataTableのある列です。

527:デフォルトの名無しさん
09/08/15 10:26:26
>>522-523
ありがとうございました。
publicにはしないことにします。

528:デフォルトの名無しさん
09/08/15 10:37:07
手癖でMainにpublicつけてたw 俺もつけるのやめよう

529:デフォルトの名無しさん
09/08/15 10:46:11
Form.DesignerにDispose関数が書かれているけど、なぜFormの基底クラスに無いの?

530:デフォルトの名無しさん
09/08/15 11:03:37
基底クラスにもあるけど?

531:デフォルトの名無しさん
09/08/15 12:53:54
>>528
svm[Tab][Tab]

532:デフォルトの名無しさん
09/08/15 15:57:44
MSDN Library for Visual Studio 2008
Main はクラス内または構造体内で宣言します。Main は static にする必要があり、
public にすることはできません。
外側のクラスまたは構造体を static にする必要はありません。

MSDN Library for Visual Studio 2005
Main メソッドは、クラスまたは構造体の内部で宣言されます。これは静的である必要があります。
パブリックにはしないでください。

533:デフォルトの名無しさん
09/08/15 16:20:07
>>531,532
㌧㌧
VSも便利そうだから横着しないで使ってみるよ

どうやらJavaのmainがpublic static void mainなので
それを引きずってしまっていたらしい

534:デフォルトの名無しさん
09/08/15 17:43:56
List<string, string, string>のような型ないんですか?

535:デフォルトの名無しさん
09/08/15 17:48:51
それはいったいどういう動作するの?

536:デフォルトの名無しさん
09/08/15 18:38:12
自己解決しました

537:デフォルトの名無しさん
09/08/15 18:45:36
それはいったいどういう動作するの?

538:デフォルトの名無しさん
09/08/15 19:03:32
本当は何をやりたくてどうやって対応したのか
結構気になる。

それとも全ての要素ごとに型指定できるものと勘違いしてただけなのか

539:デフォルトの名無しさん
09/08/15 19:29:47
class String3Entry { public string s1; public string s2; public string s3; }
List<String3Entry>
みたいなのでしょ察するに

540:デフォルトの名無しさん
09/08/15 21:02:21
継承先クラスで親クラスのメンバのアクセス修飾を変更することって出来ますか?
たとえば、

// 親クラス
public virtual void test( Object^ value );

とかなっているのを、子クラスでは同名のメンバ関数で String だけを扱うように変更したいとして、

// 子クラス
public void test( String^ value );

としたとしても、パラメータが String 以外の時は親クラスの関数を呼んでしまう。それを防ごうと、

private override void test( Object^ value );

とかするとコンパイルエラーになるし、override を new にすると、親クラスの関数が呼ばれてしまう。
アクセス修飾を変更しないで上書きして機能を無効化&インテリセンスで表示しないようにするだけでも
良いのだけど、指定以外の型で呼んだときにエラーと出来ないだろうかと考えています。

よい方法はありませんか?

※親クラスの設計や継承関係を見直すべきとの考えもあるかと思いますが、制限上それはできません。
 あと、インテリセンスを無効化したつもりでもなぜか表示されるし‥‥。

541:デフォルトの名無しさん
09/08/15 21:24:40
overrideした上でObsolete属性付けるぐらいかな(属性の意味合いが本来と違っちゃうけど)
まあ継承でやることじゃなかったね

542:デフォルトの名無しさん
09/08/15 21:30:54
親クラスに暗黙キャストできるんだから無理な話だぜとかしようと
思ったけどそれ以前にお前、思うにスレ違いじゃね?


543:デフォルトの名無しさん
09/08/15 21:34:17
>>540
どうしてもbase.test(Object)にアクセスできないようにしなければならないのであれば、
ポリモーフィズム的にかなり間違っている

> 子クラスでは同名のメンバ関数で String だけを扱うように変更したい
どうせ間違っているのだから、そういうことは出来ませんと答えてしまえばいい

派生クラスでメソッドがサポートされていないことを知らせる場合は、NotSupportedException
インテリセンスに表示されなくするのは、EditorBrowsable

>>542
言語が混ざってるからスレチかどうか判別しようが無いぜw

544:デフォルトの名無しさん
09/08/15 21:41:29
>>540
自分で触れないコードのアクセス修飾を変えようなんて、
目指す方向が間違っているとしか言いようがないね。

ProxyパターンとかAdapterパターン的な工夫を考えるべきなんじゃないのかな。
「親クラス」のメソッドを呼び出す側のコードを書いているわけだよね?

じゃあ、その「親クラス」の型を指定している部分を、別のインターフェイスに
摩り替えてやればいいじゃないか。

545:デフォルトの名無しさん
09/08/15 21:47:01
メソッドが呼ばれても何もしなかったらいいだけなんじゃないの?

546:デフォルトの名無しさん
09/08/15 21:47:57
あぁ、オーバーライドのメソッド作るとコンパイルできないってか

547:デフォルトの名無しさん
09/08/15 22:04:08
byte配列をint配列や、IntPtrに変換するにはどうすればいいですか?
出来ればメモリコピーなしで

548:デフォルトの名無しさん
09/08/15 22:32:49
int[]はコピーなしは無理
int*ならfixedしてキャスト
IntPtrはGCHandleとかfixedしてキャストとか

で、何がしたいの?

549:547
09/08/15 23:00:16
32bitカラーの画像を扱うのにbyteではなくてintで4バイト一気に処理できるようにしたかったからです。
32bitでない画像も扱うかもしれないので基本byte配列で確保しておいて
必要なときだけintに変換できたらって思ったんです。int*だとunsafeを使う必要がありますが仕方ないか。

IntPtrへの変換はアンマネージ扱うときにもしかしたら必要になるかもしれないので。
回答ありがとうございました

550:540
09/08/15 23:10:51
thx > ALL

本来、汎用的に書かれたクラスがあって、それを特定用途向けにデチューン?させたかったのです。
言葉が不足していました。ごめんなさい。

やっぱり、オブジェクト指向の思想からは外れてますよね。
で、無理にデチューンして使用するので、「間違った」使い方をしたときの動作を保証できないので
なんとかそう言う使い方をしたときにそれとわかりやすくさせる方法がないかな‥‥と。

例外を発生させるって発想がなぜかありませんでした。
NotSupportedException を使う方法を試してみたいと思います。

EditorBrowsable って
[System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never) ] てヤツですよね。
なんでか表示されます。調べてみたら、同じアセンブリ上では表示されてしまう「仕様」?らしいですね。。。

>思ったけどそれ以前にお前、思うにスレ違いじゃね?

最近両方やるので混じってるんです。w
紛らわしくてごめんなさい。

551:デフォルトの名無しさん
09/08/15 23:31:41
文字列中の特定の文字だけを全角に変換したいときはどうするのが簡単でしょうか?
perl の tr/ABC/ABC/ みたいなことがしたいんですが。





552:デフォルトの名無しさん
09/08/15 23:39:44
MatchEvaluator使った正規表現置換かねぇ

553:デフォルトの名無しさん
09/08/15 23:40:49
C#からCOLLADA DOMを使うことって出来ますか

554:553
09/08/16 00:07:45
DLLをC++/CLIで使うのではなくて、C#に用意されている機能だけで使えたらいいんですが
そもそもDOMがどういう技術なのかよく分かりません。

555:デフォルトの名無しさん
09/08/16 00:21:28
>>553
ある。
C#でまともなプログラムを作りたければ、
Codeplexでいいものが無いか探す癖をつけておけ。

556:デフォルトの名無しさん
09/08/16 00:35:24
>>551
Dictionary<char,char>で1文字ずつ写像

557:デフォルトの名無しさん
09/08/16 02:40:55
VsualC# 2008 Express EditionでSQLデータベースを
プロジェクトに追加するにはどうすればいいですか?

Webアプリど素人です。

558:デフォルトの名無しさん
09/08/16 02:52:46
>>557
まず何らかのRDBサーバーをDSN経由で扱えるように設定する。(インストールする)

何もないところから構築するならSystem.Data.SQLiteも悪い選択肢ではない。
興味がないのでまじめに調べてないが、
最近はMicrosoft SQL Serverもフリーのエディションがあると聞いたことがある。

後は普通にプロジェクトを作って参照するDBを設定するだけ。

559:557
09/08/16 03:19:21
ありがとうございます。

>後は普通にプロジェクトを作って参照するDBを設定するだけ。
ここを詳しく教えていただけませんか?

560:デフォルトの名無しさん
09/08/16 04:47:37
express はサーバーエクスプローラーってないんだっけ…。
ポトペタで使うんならこう、左側のツールボックスとかの上に
あるんだけど。ここで接続追加して Form とかにペタッて感じで。

他には…とりあえずプロジェクトのアイテムの追加に「データ」って
カテゴリないかな?

DB の種類はとりあえず VS 上に関していえば SQL Server 2005(
2008)Express が一番簡単ですんなりいくかな。一緒に入れたりする
ぐらいのものだし。


561:デフォルトの名無しさん
09/08/16 11:04:41
System.Data.SQLiteはVSExpressからじゃなんか使えない

562:デフォルトの名無しさん
09/08/16 11:26:30
え?

563:デフォルトの名無しさん
09/08/16 13:51:31
ああ、 VS 上では使えないかもね
express は拡張使えないから

564:デフォルトの名無しさん
09/08/16 16:23:49
VC#2008を使っているのですが
デバッグあり、なしで実行結果が異なるのはなぜですか?
下にソース載せておきます。

class Program
{
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Test.Func();
}

}
}

class Test
{
public static Func()
{
var randobj=new Random();

Console.Writeline(randobj.Next(100));
}}



565:デフォルトの名無しさん
09/08/16 16:25:02
何がどう変わるのかぐらい説明

566:デフォルトの名無しさん
09/08/16 16:25:09
次の人どうぞ

567:564
09/08/16 16:26:53
<<565
デバッグなしだと全て同じ値が出力されて
デバッグありだとランダムに違う値が出力されます

568:デフォルトの名無しさん
09/08/16 16:33:47
初期値なしでRandomインスタンスを作ると現在時刻をシードにする。
デバッグ実行は処理が遅いから次のインスタンスを作るときには
現在時刻が変わっているだけじゃないのか。

569:デフォルトの名無しさん
09/08/16 16:33:50
>>567
デバッグで止めながらやったんだろ
new Random() でシード指定しない場合、時刻からとられるから
秒が変わらないうちにnewしたら同じ値になるわ

570:564
09/08/16 16:38:56
>>569
納得しました。

Func()の外でnewしたらできました。

ありがとうございました。

571:デフォルトの名無しさん
09/08/16 16:42:56
>>564
乱数の種が毎回同じだから。
RandomインスタンスはTestクラスのメンバにでもして、
Environment.TickCountをそれのコンストラクタに指定すればいいんじゃないか。

572:デフォルトの名無しさん
09/08/16 23:53:01
C#で、Color.RedやBrushes.Blueは定数ですよね?
開発者はなぜ「Color.RED」や「Brushes.BLUE」みたいな感じに大文字にしなかったのでしょうか?

573:デフォルトの名無しさん
09/08/16 23:55:18
定数じゃなくて構造体

574:デフォルトの名無しさん
09/08/16 23:57:05
そんな命名規則はC/C++の遺物だから

575:デフォルトの名無しさん
09/08/17 00:21:41
>>572
君が定数を全て大文字にしているのなら、今すぐやめましょう。
string.Emptyやint.MaxValueを見なさい。

576:デフォルトの名無しさん
09/08/17 00:26:22
劣化ジャスコ言うな

577:デフォルトの名無しさん
09/08/17 07:18:40
C#というよりVisualStudioの質問になってしまいます。

ASP.NETのデバッグ時、処理時間に影響する設定などありますか?

pen4の端末だとASP.NET2.0のデバッグが異常に遅いです
ページごとに5~15秒はかかる感じ。
1.1は問題ありません。

メモリは2Gありますので、比較端末との違いはCPUになってしまうのですが、
そんなにcore2duoとpen4でそんなに差が出るのは普通でしょうか。







578:デフォルトの名無しさん
09/08/17 07:23:04
うん。

579:デフォルトの名無しさん
09/08/17 10:15:08
>>575
でもMath.PIは全て大文字ですよね?

580:デフォルトの名無しさん
09/08/17 10:19:17
>>579
URLリンク(msdn.microsoft.com)(VS.71).aspx

581:デフォルトの名無しさん
09/08/17 10:22:59
ごめんバージョン確認してなかった。.net1.1ってなんだよ
↓最新のやつ
URLリンク(msdn.microsoft.com)


1.1使ったことないから何か違いあるのかは確認してないけど
念のため訂正。

582:デフォルトの名無しさん
09/08/17 11:40:16
とあるWebアプリのサンプルソースを実行して勉強しようと思っているのですが、
Microsoft.Passport.RPS が無いためにビルドできません。

ドットネットパスポート辺りの認証に使うDLLだと思うのですが、
どこかでダウンロード出来るんでしょうか?
何を参照に追加したら良いのでしょうか?



583:デフォルトの名無しさん
09/08/17 13:32:30
引数としてDataSetを受け取るメッソド foo( ref DataSet ds ) があって、ここに
型付DataSetを渡したいのですが

---
hogeDataSet hogeDs = new hogeDataSet();

foo(ref hogeDs) // ←×
foo(ref (DataSet)hogeDs) //←×
---

となってしまいます。foo() はDataSetの構造に依存させたくないので
foo( ref hogeDataSet ds ) とは書きたくありません。

この場合どうやってhogeDsをfoo()に渡してやればいいんでしょうか?


584:582
09/08/17 13:39:02
最初の
hogeDataSet hogeDs = new hogeDataSet();
のところを
DataSet hogeDs = new hogeDataSet();
になるように何とかならないのでしょうか?

585:デフォルトの名無しさん
09/08/17 13:51:58
DataSetはClass(参照型)なので、"ref"は必要ないよ。

// foo関数定義
foo(DataSet ds)
{
hogeDataSet hogeDs = (hogeDataSet)ds; //hogeDataSetとして扱いたい場合はこのようにキャストして取得する
}

foo関数の呼び出し、
foo((DataSet)hogeDs);
でいけると思われ

586:デフォルトの名無しさん
09/08/17 13:54:35
ごめん訂正。戻り値定義書くの忘れてた。
// foo関数定義
void foo(DataSet ds)
{
hogeDataSet hogeDs = (hogeDataSet)ds; //hogeDataSetとして扱いたい場合はこのようにキャストして取得する
}

587:デフォルトの名無しさん
09/08/17 13:56:03
>>585
> foo関数の呼び出し、
> foo((DataSet)hogeDs);
キャストいらんだろー

588:デフォルトの名無しさん
09/08/17 14:07:04
>>587
あ、いらんかったな。ごめん。

589:デフォルトの名無しさん
09/08/17 14:09:37
FFolderというソフトように、エクスプローラ上で空白部分をダブルクリックしたら
BackSpaceを送る(上位へ)という事をしたいのですが、C#で実現しようと
した場合、どのようにアプローチすれば良いのでしょうか。
グローバルフックとはまた違うような気がしていますが…。

590:デフォルトの名無しさん
09/08/17 14:45:40
>>583
参照型とrefの関係が分かってないのか、分かってて聞いてるのか不明だが、
分かってて聞いてるならこうするのが一番自然。

DataSet foo( DataSet ds )
戻り側は関数の戻値で返す。

591:デフォルトの名無しさん
09/08/17 14:54:57
すいません、ref・outは参照渡しの場合は機械的に必須だと思ってました。
逆に言えば、refやoutを付けなければ値渡しだと思ってたので、今まで作ってきたPGに潜在的
バグがあるかも('A`




592:デフォルトの名無しさん
09/08/17 14:56:25
> ref・outは参照渡し
> refやoutを付けなければ値渡し
合ってるよ
ただしそれとは別に参照型・値型という区分けがあるってだけ

593:デフォルトの名無しさん
09/08/17 20:52:32
>>589
BHO とかの、Explorer 拡張かなぁ。

594:デフォルトの名無しさん
09/08/17 22:57:48
>>586
こんな感じでキャストできるっけ…?
InvalidCastExceptionにならないか?

595:デフォルトの名無しさん
09/08/18 01:35:12
>>594
ならない

596:デフォルトの名無しさん
09/08/18 01:47:45
ref out の分かりにくいところは、参照型を渡すと、参照の参照が引数になっている事。
で、参照の参照ってなんだよって言われるとCでもやらないと正体不明なんだよな。
参照に書き込める特殊型として理解しておけば十分ですけど。

597:デフォルトの名無しさん
09/08/18 01:55:24
>>596
ref outの件に限らず、参照を扱う上でその辺が理解できてないとあとあと困ることになるだろうな。
そういうのを学習するためには、Cで勉強するのが有効かな。

598:デフォルトの名無しさん
09/08/18 06:13:41
後々問題が起きなければ
参照の参照でも何でもいいさ

599:デフォルトの名無しさん
09/08/18 07:08:55
URLリンク(code.msdn.microsoft.com)
Windows API Code Pack for Microsoft .NET FrameworkってVista上のC# 2008でも使えますか?><
それともVistaでも動く物を作れるというだけで開発はWindows 7上じゃないと駄目ですか?><

This library targets the Windows 7 RTM version (now available to MSDN subscribers),
though many of the features will work on the older versions of Windows operating system.

の意味が良くわかんないです><


600:デフォルトの名無しさん
09/08/18 07:24:21
意訳

このライブラリは Windows 7 の製品版(今 MSDN Subscription にあるよ)を対象としてまーす。
古いバージョンの Windows では、いろいろな機能が動かないと思うよー


601:デフォルトの名無しさん
09/08/18 07:26:34
逆だ。

このライブラリは Windows 7 の製品版(今 MSDN Subscription にあるよ)を対象としてまーす。
だけど、古いバージョンの Windows でも、いろいろな機能がたぶん動くよー

だろ。

602:デフォルトの名無しさん
09/08/18 08:18:20
確かに思わずwon't workと読み下しそうになるな

603:デフォルトの名無しさん
09/08/18 09:03:44
>>599-601
厳密に言えば、though以下はその前の文(主節)を修飾する従属節だ。
そして、カンマが付いているので後からの説明としての意味になる。
あと、「色々な機能」なら「the many features」となってるはずなので違う。
一方で、「the older versions of Windows operationg system」は
「Windows OSの古いバージョン」と訳すと
日本語として不自然なのでこれは例外的に前から訳すことにする。

このライブラリは、Windows 7 の製品版(略)を対象としています。
古いバージョンの Windows OS でも機能の多くは動くでしょうけども。

というのが正しい解釈。

604:デフォルトの名無しさん
09/08/18 11:06:53
>>600-601,603
>>599ではないが、ありがたい。
そういう意味なのね。
まあ、いまんところWinows7マシンにしかライブラリインストールしてないけどね。

605:デフォルトの名無しさん
09/08/18 11:24:24
>Windows API Code Pack
ううーむ。DirectXのmanaged対応はMSは捨てたのかと思ってたら、Vistaで復活させたのか(今頃すぎるが)
XP対応を捨ててもいい時代が来たら、今使ってるライブラリ捨ててこっちに乗り換えてもいいなぁ。

606:デフォルトの名無しさん
09/08/18 12:26:19
>>605
いや、Windows7での復活だよ。

607:デフォルトの名無しさん
09/08/18 12:30:14
>>600-603
ありがとう><
よくわかんないけどVista+C# 2008の環境にWindows SDK 7.0のx86だけインストールしてから使ってみたら
とりあえずタスクダイアログのサンプルは動きました><

608:デフォルトの名無しさん
09/08/18 12:48:59
>>606
今試してみたけど、Vista上でこのライブラリのDirectX10のサポートが普通に動いたよ。
コードが美しいなぁ。これははやるかも。

609:デフォルトの名無しさん
09/08/18 13:27:39
>>608
VistaにはDX11も載るからそっちもそのうち使えるようになるね。
APICodePackはこないだ1.0になったばかり、
去年から少しずつバージョンアップしてだんだん充実いってた。

610:デフォルトの名無しさん
09/08/18 14:42:25
マジレスなんですが・・・
win98seまだ使ってまして
c#って出来ますか?
開発環境とか対応してるのあったら
教えてください

611:デフォルトの名無しさん
09/08/18 14:44:24
ググったらこんなのが。
まだ半分も見てないうちに貼ってみる
URLリンク(dobon.net)

612:デフォルトの名無しさん
09/08/18 14:45:19
もうセキュリティアップデートもやってないんじゃなかったか?

613:デフォルトの名無しさん
09/08/18 16:08:52
>>610
VirtualPC環境のWin98SEで入れてみてるが、.NET1.1と.NET2.0は導入可能。
ただOSやメモリの制限その他で実用じゃない。
Hello World程度のプログラムを試す程度ならと考えるべき。

614:デフォルトの名無しさん
09/08/18 17:00:00
どたなか教えて下さい。
DataSetの中に2のDataTable、dt1とdt2があって、それぞれ

dt1 { ID, NAME }
dt2 { ID, CD, BIRTHDY }

という項目を持っています。dt1とdt2はIDで紐付きますが、リレーションは作成していません。
この状態で、dt1に存在しないIDを持つDataRowをdt2から削除したいのですが、地道にクルクル
回してチェック&削除を行うしかないでしょうか?
それとも、もっと簡単にdt2からレコードを削除(あるいは削除できなくても、RowFilterやDataView
の設定で存在しないかのように振舞うでも構いません)する方法がありますでしょうか?


615:デフォルトの名無しさん
09/08/18 17:24:20
そのDataSetがRDBに結び付けられているとするならば、
DB側をSQLで更新して表示をリロードしたら解決するんじゃないのか?

616:デフォルトの名無しさん
09/08/18 17:33:21
NOT IN や NOT EXISTSで探せる

617:デフォルトの名無しさん
09/08/18 18:09:54
RDBMSとは紐付いていません

618:デフォルトの名無しさん
09/08/18 18:15:19
Linq使えないの?

619:デフォルトの名無しさん
09/08/18 18:24:44
条件後出しですみません。
RDBとは紐付いておらず、環境は.NET Framework2.0です。Linqは使えません。

620:デフォルトの名無しさん
09/08/18 20:23:45
1.
画面を3列×2行に均等に分割してパネルを配置し、
2.
各パネルに必要な入力項目をテキストボックスに並べる。
3.
各パネルは小さくなるので、入力時に、画面中央にスムーズにスライドさせてスムーズに2倍に拡大させる。
4.
入力が終わり次のパネルに移るときにまたしぼませる。

…みたいなことをWindowsフォームアプリケーションでできますか?

621:デフォルトの名無しさん
09/08/18 21:14:51
スムーズに拡大という点がちょいと面倒くさくて嫌だ。

妥当なトコで
1. 六枚の表示パネルは入力不要だからグラフィックとして自力描画。
2. それとは別に入力パネルを用意して、中央に置いて非表示にしておく。
3. 表示パネルのクリックした部分の枠線の位置から、XORで長方形の枠を
 消して書いて消して書いて表示パネルの位置まで動かす。
4. 表示パネルの絵柄を薄暗くして、入力パネルを再表示。
5. Enterとかで入力終了したら入力パネルは消して、表示パネル書き直し。
 TABなら次の項目。
なんてどうだ?

622:デフォルトの名無しさん
09/08/18 21:57:20
>>620
そういうHTML的なフレーム割りはGUIアプリではあまりやらないんだ。
実際に作ってみればわかるがあまり便利に感じないと思うよ。

情報として重要なほうをメインにしてサイズ可変に。小さくまとめられるほうは固定サイズして片側に寄せる。
これが基本。

623:デフォルトの名無しさん
09/08/18 22:02:06
TableLayout みたいのはあるけどね。

624:デフォルトの名無しさん
09/08/18 22:09:47
HTMLでもそんなUIはないと思うけど・・・
フラッシュなら話もわかるが。

要するにmacのドックみたいな操作感のUIにしたいんだろう。
>>471と同じ人っぽいが、Winフォームでやるのは無謀に思えるな。

625:デフォルトの名無しさん
09/08/18 22:15:31
WPF なら簡単にできそうじゃない?

626:デフォルトの名無しさん
09/08/19 00:22:56
俺だったら6個の小さい情報を見るの専用のwindowと
入力用の大きめのwindow1個を用意するなぁ。
小さいwindowをクリックすると、大きいwindowから入力できるようにするとか。
後、ビジネスアプリならアニメーションは絶対やめといた方がいいと思う。
ゲームのメニュー画面でも最初は反応が楽しいけど見慣れてくると飽きて、
レスポンスの方が気になるようになる。
ON/OFFで切り替えられるようにして、とか要望がきちゃうよw

627:デフォルトの名無しさん
09/08/19 00:27:17
スレたてるまでもない質問からここを紹介されたので
クローズしてきました

DBの 接続型 非接続型の質問です
私は、Open使うのが接続型で使わないのが非接続型と思っていたんですが違うのでしょうか?


また、アプリケーション開発者は主に下記のように接続型でアクセスかけて処理をするのでしょうか?


じゃんぬねっとさん のサイトから引用です
下記は接続型ですよね?

' SqlConnection の新しいインスタンスを生成する (接続文字列を指定)
Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString)

' データベース接続を開く
cSqlConnection.Open()

' 接続に成功した旨を表示する
MessageBox.Show("Microsoft SQL Server に接続されました")

' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照)
cSqlConnection.Close()

628:デフォルトの名無しさん
09/08/19 00:43:10
>>627

> 私は、Open使うのが接続型で使わないのが非接続型と思っていたんですが違うのでしょうか?

違う。DataReader が接続型、DataSet が非接続型


629:デフォルトの名無しさん
09/08/19 00:54:19
>>628
ありがとうございます
・・・とゆうことは上記例文の場合
接続型とも非接続型ともいえないってことでしょうか?

630:デフォルトの名無しさん
09/08/19 03:57:13
Open うんぬんというよりも
DB更新時のみ接続するのが非接続型で
DB更新時以外も接続しっぱなしなのが接続型(Access等)

DataAdapter や TableAdapter の Fill, Update などは
処理時、接続していない時は接続し、処理後に再び閉じる
というのを自動で行う事で非接続型を実現してる

ちなみに処理前に接続していた場合は、処理後も接続したままになる
これを利用して、アプリ起動時に接続→処理はこの接続を利用→アプリ終了時に閉じる
だと DataSet でも接続型アプリは作れる
connection 書換えが面倒だけど

631:デフォルトの名無しさん
09/08/19 08:03:40
皆さん、お返事ありがとうございます。感謝です。

632:デフォルトの名無しさん
09/08/19 08:08:13
カスタムコントロールを作成したいのですが、いい参考書はありますか?
パディングを持つテキストボックスを作りたいと思っています。

633:デフォルトの名しさん
09/08/19 21:55:06
C#を始めて1年くらいで、2Dグラフィック周りを主にやってます。
最近、JAVAプログラムのオープンソフトでJDrafterというソフトを発見したのですが、
このソフトは、イラレ感覚で2Dグラフィックを作成し、Javaのオブジェクトとして保存でき
るため、Javaプログラムからの表示やアニメーションなどにも応用できるようなのですが、
どなたか、C#でこんなプログラムをご存知の方いないでしょうか。
もしくは、オープンソフトなので、描画周りのクラスをC#に変換して利用できないか考え
ているところですが、どなたかその方法やこれに適したjava→C#変換ツールをご存知
の方があれば、ご教授をお願いします。

634:デフォルトの名無しさん
09/08/19 21:57:20
z順序はどこで分かりますか?
また、なぜz順序と呼ぶのですか?

635:デフォルトの名無しさん
09/08/19 21:57:53
splitで左右分割し、左側でメニューを選ぶと右側でそれに対応したフォームを表示するようにしたいんですが
パネルを項目分Fillで用意してVisibleで切り替える他にいい方法ありませんか?
パネルの中に部品を置けないんです

636:デフォルトの名無しさん
09/08/19 22:02:02
>>634
子コントロールのZオーダーなら、Controls.IndexOfとか。
z軸の順番だから。

637:デフォルトの名無しさん
09/08/19 22:25:18
> パネルの中に部品を置けないんです
意味が分からん

638:デフォルトの名無しさん
09/08/19 22:41:41
>>632
参考コード

public class MyTextBox : TextBox {
[DllImport("user32.dll")]
static extern IntPtr SendMessage(IntPtr hWnd, int Msg, int wParam, int[] lParam);
const int EM_SETRECTNP = 0x00B4;
int pad = 0;
public new int Padding {
get { return pad; }
set {
pad = value;
OnResize(new EventArgs());
}
}
protected override void OnResize(EventArgs e) {
base.OnResize(e);
SendMessage(Handle, EM_SETRECTNP, 0,
new int[4] { pad, pad, Width - pad * 2, Height - pad * 2 });
}
}


639:デフォルトの名無しさん
09/08/19 22:55:43
あ、バグってら。
まあ、どうバグってて、どう直せばいいかは宿題ね。がんがれ。

640:デフォルトの名無しさん
09/08/19 23:01:14
>>637
親にドッキングした複数のパネルに部品を置く時は最前面のパネルにしか置けなくて
並び順を変えながらやるにはパネル多すぎて厳しいんです
どうすればいいですか?

641:デフォルトの名無しさん
09/08/19 23:02:26
>>638
ありがとう!!
カスタムコントロールを作成するには、1アプリケーションを作るくらい大変だと聞いて途方に暮れていたんだ。
ちなみにカスタムコントロール作成の指南書は世界に存在しないのかな…。
まさにプロの世界ですね。

642:デフォルトの名無しさん
09/08/19 23:03:08
他の全てのパネルを最背面にしないと目的のパネルが最前面にならないんです
お願いします!

643:デフォルトの名無しさん
09/08/19 23:03:28
>>639
9割の言葉の意味が分からない
(T_T)。

644:デフォルトの名無しさん
09/08/19 23:04:56
>>642
そういうもんだよ。
おかしな気持ちになるが、一番背面に表示させたいものから順番に最背面にしていくんだ。

645:デフォルトの名無しさん
09/08/19 23:10:47
>>644
パネルの利用方法はこれであってるんですね
ひたすら入れ替えます。ありがとうございました

646:デフォルトの名無しさん
09/08/19 23:14:48
>>640
デザイン時はタブコントロールに入れておいて実行時にパネルにAddしたら?

647:デフォルトの名無しさん
09/08/19 23:19:46
実行時でもタブでよくない?
タブ非表示にすればいいだけだし

648:デフォルトの名無しさん
09/08/19 23:22:40
・日本は日本人だけの物ではない
・党大会で日本国旗を掲げた事がない
・日本国旗を切り裂く
・子育て支援政策に国籍制限なし
・外国人参政権賛成
・アジア共通通貨を作る
・友愛政治

by民主党

649:デフォルトの名無しさん
09/08/19 23:24:37
コピペ君って馬鹿だな、まで読んだ。

650:デフォルトの名無しさん
09/08/20 00:40:05
日の丸って国旗じゃないよな?
そんな法律や政令あったっけ?
君が代も国歌じゃないって聞いたけど

651:デフォルトの名無しさん
09/08/20 00:43:58
>>650
いつの人だよw

652:デフォルトの名無しさん
09/08/20 00:51:48
1999年に「国旗及び国歌に関する法律」で定められたのか

653:デフォルトの名無しさん
09/08/20 03:10:20
WPF上での話ですが、
Canvas内でImageクラスの画像を操作(拡大・縮小・回転・移動等)したい場合、
この操作に関するコードはどのクラスに置くのがいいですか?

654:デフォルトの名無しさん
09/08/20 06:42:17
>>644
の説明は本当に合ってるのか?

655:デフォルトの名無しさん
09/08/20 07:15:10
ラベルやテキストボックス、コマンドボタンやラジオボタンなどのコントロールを100個ほど並べましたが、
タブオーダーがおかしくなりました。
全コントロールのタブオーダーを早く調べる方法はありますか?

656:デフォルトの名無しさん
09/08/20 07:35:06
>>653
むしろそれはXAML中にStoryboardで書く。

657:デフォルトの名無しさん
09/08/20 09:50:25
>>644
control.TopMost=true;
control.TopMost=false;
のほうが早くない?(試してない)

>>655
表示-タブオーダー


658:デフォルトの名無しさん
09/08/20 10:07:50
>>657
デザイン時の話じゃ寝 >644

659:デフォルトの名無しさん
09/08/20 10:12:28
>>658
デザイナーなら最前面に移動のボタンがあるじゃん。

660:デフォルトの名無しさん
09/08/20 11:52:49
最背面がわかっててなぜ最前面がわからないんだろうか

661:デフォルトの名無しさん
09/08/20 12:51:10
ってか、重なる場合はユーザーコントロールで画面をバラバラに作っておいて、
実行時にコンストラクタでAddじゃないの?
画面増えたりUI変更したら死なない?

662:デフォルトの名無しさん
09/08/20 13:32:08
というか、重なってるパネルは表示中の1つを除いて非表示にしておくものだと思うんだがどうか。

663:デフォルトの名無しさん
09/08/20 13:58:56
>>656
ありがとう。その方向でやってみます

664:デフォルトの名無しさん
09/08/20 14:28:51
俺もUC.Addがいいと思う

665:デフォルトの名無しさん
09/08/20 15:04:46
DataGridViewでAccessのmdbをソース指定して実行したんですが、データが表示されません
他に何をいじればいいんですか?

666:デフォルトの名無しさん
09/08/20 15:11:39
>>665
どんなコードをかいたんだ?

667:デフォルトの名無しさん
09/08/20 15:13:58
コードは書いてません
コントロールをフォームに置いて、右上の三角を押してデータソースを選択しただけです

668:デフォルトの名無しさん
09/08/20 15:24:08
表示命令を書かなきゃ表示されるわけないだろ

669:デフォルトの名無しさん
09/08/20 15:27:10
うーん、設定の仕方がまずっていると思われる。
テーブルの設定も行っている?

670:デフォルトの名無しさん
09/08/20 15:42:36
テープルにもチェック入れました。
mdbの簡単な奴を作ってみてソースに指定したんですが表示されません
項目名は表示されるんです。
右上三角のデータのプレビューを押すとズラーっと表示されるんですが
アプリ実行時には項目名だけで、データが表示されないんです。

671:デフォルトの名無しさん
09/08/20 15:43:15
おそらく、Form1_Load()あたりの先頭にTableAdapter.Fill()の呼び出しが
追加されてると思うけど、それをtry catchで挟んで捕捉できるようにしてみ。

672:デフォルトの名無しさん
09/08/20 15:58:47
わかりました。
Form1_Load()自体が存在してませんでした
Form上でDataGridViewを置いたらForm1_LoadにTableAdapter.Fillが追加されて実行後データが出てきました
ありがとうございました。

673:デフォルトの名無しさん
09/08/20 16:05:28
一方のビジブルをフォルスにして他方を前面に出すのと、
一方をブリングトゥフロントにして前面に出すのとでは、
どうちがうの?

674:デフォルトの名無しさん
09/08/20 16:19:27
重なったパネルをやめてユーザーコントロールにしたんですが
ユーザーコントロールにDockがなくて詰まりました。
基本クラスをUserControlからPanelにしたりとか考えたんですが名前空間が通りません。どうすればいいですか?

675:デフォルトの名無しさん
09/08/20 16:22:02
Webの検索サイトとかでテキストボックスにキーワードを入れて検索ボタンを押すまでの処理をC#でやる場合何を勉強すればいいんでしょうか

676:デフォルトの名無しさん
09/08/20 16:36:45
>>675
GUIアプリとして実装するのとWeb上のサービスとして実装するのとで話がぜんぜん変わってくる。
もっと目的を詳しく説明しないと誰も答えられない。

677:デフォルトの名無しさん
09/08/20 16:38:35
unmanagedなリソースを複数のインスタンスで共有したいのですが、
参照カウンタ的な形で管理するには自前で実装するしかないのでしょうか。
それとも.NETの共通ライブラリにそれをやるための仕組みが用意されていますか?

678:デフォルトの名無しさん
09/08/20 16:45:07
>>676
GUIアプリです。例えば検索したいキーワードの一覧も持っていて、それを順番に検索にかけヒット数などを記録していくソフトにしたいんです。

679:デフォルトの名無しさん
09/08/20 18:14:01
>>674
すいません解決しました。自分を親にDockさせるんじゃなくて親に子をDockさせる様に書いたらコンパイルできました。

680:デフォルトの名無しさん
09/08/20 18:24:20
>>678
取り敢えずHTTPとHTMLの勉強

>>677
どこまで汎用でやればいいのかって話なので無いんじゃね
まあそんな大層なモンでもないだろ

681:デフォルトの名無しさん
09/08/20 19:38:00
>>677
SafeHandleでラップして、破棄はGCに任せれば?

682:デフォルトの名無しさん
09/08/20 20:24:28
>>681
どもです。前提が抜けてましたが、基本的に管理対象はCOMオブジェクトのインスタンスです。

683:デフォルトの名無しさん
09/08/20 20:47:38
配列に配列を追加する方法を教えてください。
string[] textFiles = Directory.GetFiles(Path, "*.txt");
で、テキストファイル一覧を配列に入れることができます。
これにたとえば拡張子.logを追加するにはどうしたらよいですか?


684:デフォルトの名無しさん
09/08/20 20:52:25
ConcatしてToArrayとか
Array.Resizeして残りをArray.Copyとか

685:デフォルトの名無しさん
09/08/20 20:55:08
Linq使えば。

686:デフォルトの名無しさん
09/08/20 21:12:10
>>673
フォーカスとか

687:デフォルトの名無しさん
09/08/20 22:16:33
>>683
string [] exts = { ".txt", ".log" };
var fileNames = from filename in System.IO.Directory.GetFiles (Path)
let ext = System.IO.Path.GetExtension (filename).ToLower ()
where exts.Contains(ext)
select System.IO.Path.GetFileName (filename);
foreach (var file in fileNames){
Console.WriteLine("Filename:{0}", file);
}

688:デフォルトの名無しさん
09/08/20 23:21:20
>>684
Array.Resizeをforで回して追加できました。
感謝します。



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