VB.NET質問スレ (Part22 ..
534:デフォルトの名無しさん
07/08/06 16:34:15
フォームにプロパティをつけて、そのフォームをShowDialogで開く。
閉じられたときに、そのプロパティを取得する。
みたいな感じでいいんじゃない?
まんまダイアログでいいなら、追加→新しい項目→ダイアログ
でダイアログ追加してそれをカスタムするとか。
535:デフォルトの名無しさん
07/08/06 17:37:46
つうか DialogResult
536:デフォルトの名無しさん
07/08/06 17:41:59
oh! DialogResultって普通にフォームのプロパティやったんやな…
537:533
07/08/06 18:08:26
>>534-536
DialogResult というプロパティがあってそれを変更しておけばいいのですか、
なるほど、わかりました!!
ありがとうございました。
538:デフォルトの名無しさん
07/08/06 18:30:19
モーダルなダイアログなら、フツーはShowDialogの返り値を取得するんだけどね。
いつものことだけど、このスレにもc#のスレにも結構テキトーなこという奴がいるんで
話半分に聞いた方がいいよ。
モーダレスなフォームで閉じられた時に何らかの値を「返す」ようにしたいのなら
例えばValueEnteredのようなイベントを自作して、ValueEnteredEventArgsのプロパティとして
返り値が取得できるようにした方がわかりやすいと思う。
539:デフォルトの名無しさん
07/08/06 22:49:58
と本日一番てきとーな答えが返ってきました。
540:デフォルトの名無しさん
07/08/06 23:08:10
と、暇人が申しております。
541:デフォルトの名無しさん
07/08/07 08:58:11
つうか、親画面が生成したモードレス画面のClosingイベントか何かにイベント関数設定すればよかんべ。
VB6とちがって、 AddHandlerつう便利な呪文があるんだから。
イベント関数は別にそのイベント発生フォームにある必要がない。
542:デフォルトの名無しさん
07/08/07 09:44:49
>>538
モーダレスなフォームが閉じられた場合、どこがその返り値を受け取るのさ?
モーダレスの場合は、閉じられる側のフォームが値を押し付けるしかできないだろ。
ってか533は「MessageBox のように戻り値を持つFormを作成するには」って書いてるのに、なんでモーダレスの話になるのさ?
543:デフォルトの名無しさん
07/08/07 10:03:02
>>542
>>538じゃないが、つくりにもよるが、>>541に書いたとおりだよ。
モードレスフォームから受け取りたいと思ってる画面が、Closeingイベントか何かにイベント関数登録しとけばいいだけ。
その、受け取りたい側は別に1つである必要はない。
モードレス側がイベントをブロードキャストするだけ、おらっちしぬけどいいべか?って。
544:デフォルトの名無しさん
07/08/07 10:07:55
んあー、、っと、AddHandlerで、モーダレス側のClosingの時に、親の方のメソッド走らせるってことか。
んなことできるのか!
545:デフォルトの名無しさん
07/08/07 10:16:02
そこが楽しいところですよ。
コントロールダブルクリックしてイベント書いてるだけじゃVB6と変わらない。
Delegateの仕組みというか其のあたりを理解すれば、また違う世界が・・・。
546:544
07/08/07 10:20:39
>>545
(*´Д`*)試したよ。出来たよ。
戻り値欲しいときは全部モーダルで開いてたんだが、これで世界が変わりそうだぜ!
AddHandlerもよく使うのにこういうことに頭回らなかったなー。
547:デフォルトの名無しさん
07/08/07 10:26:27
AddHandlerって、イベントの呼び出しスタックに関数を登録するイメージだから。
イベント発生時に、そのスタックのDelegateを順次呼び出し。
まあ、注意点は順序でしょうか?基本は登録順だから(確か変えられたけど)
通信系とか、その他でも、この使い方知れば、関連フォーム、クラスにブロードキャスト可能。
フォームだけじゃないことも大事なところ。
548:デフォルトの名無しさん
07/08/07 12:11:49
>>538
>>542
×モーダレス
○モードレス
>>544
そりゃ、
・ 一つのイベントハンドラを複数のコントロールで共用したいとき
・ 動的に生成されるコントロールのイベントを捉まえたいとき
なんかのために、イベントハンドラを動的に設定するためのもんなんだから
出来なきゃ困る。
549:デフォルトの名無しさん
07/08/07 12:27:41
>>548
よくある勘違いだが、それは「モードレス」っていう表記の方が間違ってるんだよ。
モーダル ⇔ モーダレスという表記が正しい。
550:デフォルトの名無しさん
07/08/07 12:34:47
かたかな表記はどっちにしても間違いってのが、ゼミの教授のお言葉。
551:デフォルトの名無しさん
07/08/07 12:38:20
>>549
いや、modeの語尾変化でmodalとmodelessだからモーダルとモードレスだろw
552:デフォルトの名無しさん
07/08/07 12:44:13
そりゃmodeの音が「モード」だという思い込みを前提としているからそういう判断になる
553:デフォルトの名無しさん
07/08/07 12:44:21
こまかいなぁ
554:デフォルトの名無しさん
07/08/07 12:54:36
くだんね
555:デフォルトの名無しさん
07/08/07 12:59:05
modeの発音記号は[moud]で一番近い日本語表記はモードですぅ〜><
ってかくだらんことで意地張ってレス消費させるなw
556:デフォルトの名無しさん
07/08/07 12:59:42
>>555
オマエモナー
557:デフォルトの名無しさん
07/08/07 13:01:06
>>552はi mode も アイモーダとか発音してるんだぜ(´ー`)
558:デフォルトの名無しさん
07/08/07 13:02:01
↓下らん流れを変える、質問よろ。
559:デフォルトの名無しさん
07/08/07 13:04:17
まぁ表記がどっちだろうと構わないが、一般的なのはどっちなのか
グーグル先生に聞いてみた。あとはご自由に。
モーダレス 1,470 件
モードレス 29,500 件
560:デフォルトの名無しさん
07/08/07 13:52:39
初心者です、2点わからないことがあるので教えてください。
1点目が、データグリッド内に指定した行数だけデータを表示させる方法。
2点目が、ページング機能のプログラムの書き方。
この二つの方法をご教授ください。
561:デフォルトの名無しさん
07/08/07 13:59:41
>>560
環境も書いてくれ。
VS2005とか。
562:デフォルトの名無しさん
07/08/07 14:04:31
すいません
書き忘れです。
.net2003でmysql、odbc使ってます。
563:531
07/08/07 16:47:33
すまんが、>531にもなにかヒントちょうだい
564:デフォルトの名無しさん
07/08/07 18:34:12
>>563
答えが返ってこないのは、質問が漠然としているからでもあると思うよ。
君は読み手のESP能力を無意識に期待してるんだよ。
なぜ読み手の立場にたった文章が書けない?
例えばこのスレの標準的な読み手ならこう思うんじゃないか?
-------------------------------------------------------------
結局こやつは何がしたいのだ?
パネルやラベルを任意の位置に表示すれば済むように感じるのだが、
それではダメなのだろうか?
ダメだとしたら何故?
というか、なぜこやつは読み手にエスパーであることを要求して平気なのだ?
-------------------------------------------------------------
565:デフォルトの名無しさん
07/08/07 19:50:10
つか、「タスクが移動してしまい」の意味が解らん…
566:デフォルトの名無しさん
07/08/07 21:27:51
>>563
ShowInTaskbarをFalseにする。
567:デフォルトの名無しさん
07/08/07 22:01:42
Form を画面の中央に配置する場合、最も普通に行う方法はどのようなものでしょう?
VB6の時代には、Screenのサイズから割り出してTopとLeftを指定しました。
そうではなく、何か簡単な一発メソッドか何かで指定可能でしょうか。
また、画面が複数ある場合にも対応可能でしょうか。
なにとぞよろしくお願いします。
568:デフォルトの名無しさん
07/08/07 22:04:25
StartPosition
569:567
07/08/07 22:16:59
>>568
おお、助かります。やはりなんでも用意されているのですね!!
ありがとうございました!!
570:デフォルトの名無しさん
07/08/07 22:25:15
>>563
率直に言わせてもらう。
意味がわからん。
571:デフォルトの名無しさん
07/08/08 09:27:52
>>563
パネルとかを動的に生成して、任意の位置に最全面で表示させればええんじゃない?
試してないけど。
572:デフォルトの名無しさん
07/08/08 12:02:16
>>560
SQL文で必要な行数を持ってこいとすれば解決するのでは?
そうすればグリッドはただ表示するだけなんだし。
573:デフォルトの名無しさん
07/08/08 13:34:45
すみません、ボタン・コントロールの ForeColor に教えてください。
このプロパティを標準以外に変更しようとしてBlueなどを代入してみたのですが
変更できませんでした。これは単純には変更できないとしますと、
何か別のプロパティを先に変更しておく必要があるでしょうか。
その場合何を変更しておけばよいでしょう?よろしくお願いします。
574:573
07/08/08 13:36:02
>>573 すみません間違えました。訂正します。
>ForeColor に教えてください -> ForeColor について教えてください
575:デフォルトの名無しさん
07/08/08 13:40:03
.ForeColor = Color.Blueで効くはずだけど?
VisualStyleが腐ってるんじゃね?
576:デフォルトの名無しさん
07/08/08 13:57:44
>>573
FlatStyleプロパティがSystemになってるとForeColorの設定いじっても変わらない。
577:デフォルトの名無しさん
07/08/08 14:53:25
すみません、質問させて下さい。
DataGridViewにて、CellPaintingイベントで、セルの中身を自分で描画しようと思ったのですが、
Dim rect As New Rectangle(e.ClipBounds.X, e.CellBounds.Y, e.CellBounds.Width / 2, e.CellBounds.Height)
e.Paint(rect, DataGridViewPaintParts.Background + DataGridViewPaintParts.Border)
e.Handled = True
イベント内に以上のように書いた場合、セルの左半分だけ背景とボーダーが描画されると思ったのですが、
実際実行してみたところ、セル全体に背景とボーダーが描画されてしまいました。
rectを(1,1,1,1)なんて指定してみたところで、関係なくセルの全体が描画されているようでした。
これってrectで範囲指定ができないバグなんでしょうか?
それとも自分の書き方が間違ってるんですかね?
578:デフォルトの名無しさん
07/08/08 16:18:26
>>576
FlatStyle プロパティを System にしていました。><
むかし VB6 のときは、GraphicStyle だとかにすると色関係が
帰られたかと思いましたが、VB.NETではどうやっても無理ということ
なのでしょうか?
>>575
VisualStyle はググッたのですが、もしかすると WinXpの
ということでしょうか。
579:デフォルトの名無しさん
07/08/08 16:22:11
>>578
FlatStyle プロパティを System にしていましたのは、
Flat ですと見た目のインパクトが弱いためで、
その形が使いからでした・・・
580:デフォルトの名無しさん
07/08/08 16:26:56
>>579
Standardじゃだめ?
581:デフォルトの名無しさん
07/08/08 16:59:37
>>580
なるほどー。
ただやってみたのですが、BackColor が
System のときと同じように、立体的なテキスタイルになる
とうれしいのですが、可能でしょうか?
582:デフォルトの名無しさん
07/08/08 17:54:41
自分の環境だとStandardとSystemの外観がまったく一緒なんだが、違うのかな…?
583:デフォルトの名無しさん
07/08/08 18:18:15
>>582
そうなのでした、これはもしかしたら、WinXPの設定なのですかね・・・。
584:デフォルトの名無しさん
07/08/08 18:19:37
質問者はOSとIDEの環境くらい書いておくれ。
585:デフォルトの名無しさん
07/08/08 20:03:51
>>584
すみません、OS は WindowsXp で、IDE は VS2005Pro でした。
そういえば、Xp は >>575さんの VisualStyle がありました、
これで変更してるから表示が変わるのですね。
586:デフォルトの名無しさん
07/08/08 23:32:38
Delegate ステートメント
URLリンク(msdn2.microsoft.com)(VS.80).aspx
Delegateについて勉強中なのですが教えてください。VB2005EEです。
上記の使用例で書かれているコードについてなのですが
Delegateがどのように役立っているかが全くわかりません。
Protected Sub Test()
AddNumbers(5, 3)
SubtractNumbers(9, 3)
End Sub
と書いたほうが良い様に思うのですが。
587:デフォルトの名無しさん
07/08/08 23:34:27
@ITのデリゲート入門でも読めば?
あんまりいい記事じゃないけど、デリゲートの存在意義は馬鹿じゃなきゃ理解できるはず
588:デフォルトの名無しさん
07/08/08 23:36:25
お前はいまとどめをさしてしまった…
589:デフォルトの名無しさん
07/08/08 23:37:49
イベントとか
コレクションのSortとか
590:586
07/08/09 01:09:19
>>587,>>589
回答ありがとうございます。何となくわかった気がします。
591:デフォルトの名無しさん
07/08/09 11:30:48
Windowsアプリで質問です。
ユーザーコントロールを作成し中にLabelとPictureBoxを配置しました。
このユーザーコントロールを貼り付けたフォームで、このユーザーコントロールのMouseHoverイベントを
使用したいのですがLabelとPictureBox以外の領域でしかMouseHoverイベントが発生しません。
このユーザーコントロール中(LabelとPictureBoxとそれ以外の領域全て)でMouseHoverイベントを
発生させるにはどのようにすれば良いでしょうか。
592:デフォルトの名無しさん
07/08/09 11:44:20
Private Sub UserControl1_MouseHover()
Private Sub Label1_MouseHover()
Private Sub PictureBox1_MouseHover()
でいいんじゃね?(未確認)
593:デフォルトの名無しさん
07/08/09 12:27:15
>>591
しばらく前にほとんど同じ質問があったなあ。
過去ログ見れば参考になるサンプルコードが見つかるはず。(確か俺が書いた)
まあ要は、自分の内部コントロールのイベントを拾って、
あたかも自分のイベントのように偽装(っていってもOnXXXX呼ぶだけ)すればいいだけだよ
594:デフォルトの名無しさん
07/08/09 12:30:23
>>592
解答ありがとうございます。
その記述をフォーム側に書くと言うことはLabelとPictureBoxをパブリックなプロパティにするということですね。
この場合、ユーザーコントロール内のマウスの位置によって3種類のMouseHoverイベントが起こるのが
ちょっとまずいです。
ユーザーコントロール内でマウスを動かしているだけで何度もイベントが発生するからです。
イメージとしてはユーザーコントロールと同じ大きさの透明のコントロールを最前面に配置して
その透明のコントロールのMouseHoverイベントを使用したい感じです。
595:デフォルトの名無しさん
07/08/09 12:32:23
>>593
ありがとうございます。
過去ログを探してみます。
よろしければ検索のためのキーワードみたいなものを教えてもらえないでしょうか。
596:デフォルトの名無しさん
07/08/09 12:41:55
>>593
内部のイベントを全て自作のイベント(MouseHoverExみたいな)にまとめて外部に公開するってことですかね。
そうするとやっぱりそのコントロール内でそれぞれのコントロールにマウスを合わせる度に同じイベントが発生
してしまいます。
Clickイベントなどはこの方法で実装しています。
597:デフォルトの名無しさん
07/08/09 12:42:35
>>595
一個前のスレの363以降だね。
っていうか、593のヒントから自分でゼロから考えた方が楽しいぞ
598:デフォルトの名無しさん
07/08/09 12:43:31
>>594
じゃあさ、MouseHoverイベントを使って
何をやりたいのかも書いておいたほうが回答もらいやすいぞ。
君がこれだ!って思う方法が可能とは限らないんだから。
599:デフォルトの名無しさん
07/08/09 12:57:13
>>598
やりたいことはメニュー型のランチャーのサブメニュー項目のようなコントロールです。
使ってない人にはさっぱりかもしれませんがメニュー型ランチャーのOrchisでいう
サブメニューのような感じです。
画像とテキストを含んだユーザーコントロールにMouseHoverすると新しいFormを
Showすると言うような動きがしたいです。
>>597
了解です。
しばらくちゃんと自分で考えてみます。
600:デフォルトの名無しさん
07/08/10 18:19:38
vb2003でGraphicsオブジェクトを使用して画像を合成しています。
単純に合成はできるのですが、乗算で合成したいなぁ、と思って
Graphics.MultiplyTransformなるメソッドを使用してみたのですが
乗算になっているようには見えません。
Photoshopでレイヤーを乗算にして描画される、あのイメージだったんですが
このメソッドで良かったのでしょうか?
g.DrawImage(imgA, rect)
Dim transformMatrix AS New System.Drawing.Drawing2D.Matrix
transformMatrix.Translate(1.0F, 1.0F)
g.MultiplyTransform(transformMatrix, System.Drawing.Drawing2D.MatrixOrder.Append)
g.DrawImage(imgB, rect)
こんな感じでやってます。
601:デフォルトの名無しさん
07/08/10 19:35:40
ドキュメント読めばわかるが、MultiplyTransformはワールド変換のためのメソッド。
つまり座標変換。
System.Drawing.Graphicsというかその基になってるGDI+には色合成処理は用意されてない。
アルファブレンドはできるけど。
ので頑張って自前で実装するしかない。探せば見つかるかもしれないけど。
URLリンク(blog.livedoor.jp)
DelphiのコードだけどGDI+の乗算カラーフィルタのサンプルを見つけた。
参考になるかもしれない。
// そういえばPaint.NETは今どうなってんだろ。
602:デフォルトの名無しさん
07/08/10 19:42:26
そりは変換行列の「積」なんでは?w
レタッチソフトの「乗算」の処理内容を具体的に知らないので抽象的なアドバイスになって
申し訳ないけど、たぶんカラー行列を使うんじゃないかな?(DrawImageのオーバーロードを見るべし)
603:デフォルトの名無しさん
07/08/10 22:38:02
IME制御の質問です
アルファベットしか入力し得ないテキストフィールドなので、そのフィールドでの
入力時はIMEの変換モードを英数に固定しようとして
hWnd = TextBox1.Handle
hIMC = ImmGetContext(hWnd)
If hIMC <> 0 Then
ImmSetConversionStatus(hIMC, IME_CMODE_ALPHANUMERIC, IME_SMODE_NONE)
ImmReleaseContext(hWnd, hIMC)
End If
のようなことをFormのActivate時に実行してみたのですが、指定したフィールドだけでなく、
全ての項目にこの設定が適用されてしまいます。
その項目だけに効果を与えるにはどうすればよいのでしょうか?
604:デフォルトの名無しさん
07/08/10 22:50:04
>>603
MSDNライブラリのTextBoxのメンバ一覧を穴があくまでじっくり読む
605:デフォルトの名無しさん
07/08/10 23:09:33
>>604
お返事ありがとうございます。
ただ、もし ImeMode の事を言われているのであれば、それが使えない環境なので・・・・・・。
そうでないのであれば、ちょっと判りませんでした。
606:デフォルトの名無しさん
07/08/11 00:47:24
>>605
それどういう環境?
607:デフォルトの名無しさん
07/08/11 00:59:18
.NET Compact
608:デフォルトの名無しさん
07/08/11 11:37:08
すみません、教えてください。
Labelコントロールにおいて、現れている文字列を、マウスの操作でクリップボードに
コピーすることは普通はできないと思いますが、もしかしてそういうことができるように
するためのプロパティとかは存在しないでしょうか?
どうしても不可能な場合はボタンかまたはコンテキストメニューでもつけて
クリップボードにコピーするなどは考えられるのですが、テキストボックスと同様に
手軽に使えて、しかも文字列が変更されてしまわないものが望みです。
ちょうど、プロパティ・ダイアログの中のURLなどがそのようにできるものでした。
同様の機能を実現するのには特別なコントロールを自作する必要があるでしょうか?
すみませんがよろしくお願いします。
609:デフォルトの名無しさん
07/08/11 11:47:05
TextBoxでReadOnlyにしたらいいんでないの?
あとはボーダーとか消してラベルっぽくすれば。
610:デフォルトの名無しさん
07/08/11 12:26:22
>>609
おお、TextBox に ReadOnly というプロパティがあったのですね!
わかりました、ありがとうございます!
いろいろ新しくなっているのですね!助かりました。
611:デフォルトの名無しさん
07/08/11 12:33:18
おい大昔からなかったかい?
612:デフォルトの名無しさん
07/08/11 12:43:08
板違いかもしれません。ですが質問します。
C#.NETとVB.NETの違いって何ですか?
調べてみると、(触り程度)
C#.NETにメモリーを切る概念が無くなったと。
だったら、方言とコンパイルの速度だけの違いになりますか?
613:デフォルトの名無しさん
07/08/11 13:56:52
ハァ?
614:デフォルトの名無しさん
07/08/11 13:59:46
メモリー切る機能ってなんだよ
615:デフォルトの名無しさん
07/08/11 14:26:34
俺のおじいちゃんがメモリ確保することを「切る」と言っていたが
21世紀にその言葉を聞けるとは思わなんだ
616:デフォルトの名無しさん
07/08/11 17:57:37
万能動詞、切る
何が何でも切るって言うんだぜ?
617:デフォルトの名無しさん
07/08/12 10:06:08
コンソールアプリケーションの質問です
ReadLineなどで、画面から読み込む文字列を
[******]のようにマスクして、読み込む方法はあるのでしょうか?
すみませんが、よろしくお願いします
618:デフォルトの名無しさん
07/08/12 13:05:52
>>612
VB.NETはリフレクションを使用するコードが勝手に生成されて凄く遅くなることがある
回避はできるからそれさえ注意すれば一緒
619:デフォルトの名無しさん
07/08/13 09:08:53
言語の違いなど飾りです。
PGさんにはそれがわからんとです。
620:デフォルトの名無しさん
07/08/13 10:44:01
つまらん
621:デフォルトの名無しさん
07/08/13 14:16:59
Graphicsクラスで1ピクセルの点をPenを使って書く時って
Graphics.DrawLine(Pens.Black, New PointF(10, 10), New PointF(10.1, 10.1))
のようにPointF使うしかないの?
622:デフォルトの名無しさん
07/08/13 15:21:56
もう少しものの聞き方を勉強しなおした方がいいよ。
623:621
07/08/13 15:33:05
>>622
ごめんなさい。
624:デフォルトの名無しさん
07/08/13 16:24:46
DrawLineはPointFを引数にするものもあるけど、Singleを引数にしているものもあるだろ?
あとなんで1ピクセルが0.1だと思ってるんだ?
625:621
07/08/13 17:38:46
>>624
Graphics.DrawLine(Pens.Black, 10, 10, 10, 10)
だと何も描かれないですし、
Graphics.DrawLine(Pens.Black, 10, 10, 11, 11)
や
Graphics.DrawLine(Pens.Black, 10, 10, 11, 10)
だと2ピクセル分描かれます。
10.1を指定するときれいに1ピクセル分描かれるのですが。
何かとんでもないトコを見落としているのかなぁ。
もうちょっと調べてみます。
626:デフォルトの名無しさん
07/08/13 17:48:01
ピクセルの操作はBitmap.SetPixel/GetPixelで。
短いラインがどのなんドットなるかなんて、
ディスプレイディバイスの種類が違ったり、
スケールとか座標系いじったりしたら意味ないだろ。
627:デフォルトの名無しさん
07/08/13 18:05:15
>10.1を指定するときれいに1ピクセル分描かれるのですが。
あほすぎて話にならん。
そんなのディスプレイの都合上、1ピクセル分の直線が引かれているように見えるだけだろ。
プログラム上では0.1ピクセルの直線を引いてる。
結果さえよければどうでもいいのか?
説明が面倒なので、答えを書く。
お前が書きたい1ピクセルの点というのは、数学的に言えば「一辺1ピクセルの面」だ。
面を書くのはDrawLineではない。
e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
628:デフォルトの名無しさん
07/08/13 18:07:38
>>626
.netじゃ座標や幅の基本単位がピクセルだから関係ないんじゃね?
twipならディスプレイの設定で変化してくるが。
629:621
07/08/13 18:17:21
>>627
もちろんFillRectangleやSetPixelを使うことは知っています。
1ピクセルの点をPenを使って書く時に10.1のように
書くしかないのですかという質問なのですが。
630:デフォルトの名無しさん
07/08/13 18:17:57
.NET2.0用に作成したアプリケーションは、3.0しかインストールしていないWindowsでは
動作しないのでしょうか?
631:デフォルトの名無しさん
07/08/13 18:24:08
ポカーン
632:デフォルトの名無しさん
07/08/13 18:24:52
>>629
1x1のビットマップを作成してDrawImageという手もあるけど
それならまだ10.1の方がスマートな気がする
>>630
3.0は、2.0に一切手を入れずに新機能を追加しただけのもの
MSを信じるなら全く問題ないはず
633:デフォルトの名無しさん
07/08/13 19:13:37
>>629
だからよ、お前はDrawLineの仕様がわかってないって言われてるの。
DrawLineはあくまで座標ペアで指定された2つの点を結ぶ直線を描画するんだ。
「点」ってのは直線じゃないだろう?
Graphics.DrawLine(Pens.Black, New PointF(10, 10), New PointF(10.1, 10.1))
お前のこれは、「見かけ上」1ピクセルの点に見えるだけで、プログラム上じゃ(10, 10)to(10.1, 10.1)の直線なワケ。
お前が厳密に1ピクセルの点を書きたいわけじゃなく、ただ見かけだけそうなってりゃいいや、っていうならそれでいいよ。
ただ、そんなのに甘んじるようなお前は果てしなくセンスが無いってだけだ。
634:デフォルトの名無しさん
07/08/13 19:25:55
Penで点を描くのは確かにおかしいかも
635:621
07/08/13 21:25:54
>>633
すみません。怒らせちゃって。
確かにおかしいんですよ。
僕も通常点を描くだけならFillRectangleで済ますんですが
ただ描画するのは違うクラスでこのクラスはもう変更きかなくて
Penと座標しか指定できないので
困ってたんです。
で、やっとこさ10.1というのを発見してあなたの言う見かけだけ
はできたのですが、他に何かないかなと思った次第でして。
あなたと私はたぶん似ているんだと思います。
私もDrawLineの仕様を言いたいですが、
Penと座標しか指定できない場合、10.1と指定するのことに
甘んじたくなくて質問したんです。
あなたも同じ状況なら他になにかないか探すと思います。
636:デフォルトの名無しさん
07/08/13 21:31:33
そもそもPenと座標しか指定できないのになんで他の方法を探してたの?
637:621
07/08/13 21:32:58
>>632
ありがとうございます。
少し気が楽になりました。
638:621
07/08/13 21:36:12
>>636
他の方法というのは
例えば独自のPenを作成するとか
Penのプロパティにそういうのが指定できるとか
もしあったらと思いまして。
ですのでPenを使って何かないのかなと質問しました。
639:デフォルトの名無しさん
07/08/14 02:14:46
フォームクラス以外のクラスからフォーム上のコントロールを操作したいとき、
My.Forms.Form1.TextBox1.text = "2ch2ch"
とか使う?それとも引数で渡す?
俺はMSがせっかく用意してくれてるんだからMy使うんだけど、みんなはどっち?
640:デフォルトの名無しさん
07/08/14 04:42:20
TreeView や ListView 上の ListViewItem というのは、
Selected 状態と Active 状態とで異なるでしょうか?
Explorer上の TreeView や ListView では、点線でかこまれただけの状態の Item
と、実際に選択されて薄いパープル色あるいはグレーのバックカラーになって現れている
場合の2種類がありますが、それらに対応するものなのでしょうか。
641:デフォルトの名無しさん
07/08/14 04:51:13
はて、Active 状態ってのは一体どのプロパティがどの値になってるのを指すんだ?
642:640
07/08/14 05:21:30
>>641
そうですね、よくわからないんですが、OnItemAvtivated() の Protected メソッドが
動くときのイベントが発生したとき、という意味のつもりでした。
Explorer では「単なる点線囲み状態」 と 「BackColorが色付く状態」 の両方があったので
そういう違いがある2つの状態というものがあって、それが Selected とは別の何かなのかなと
思ったのでした。
そういうもの自体存在しないのでしょうか。
643:デフォルトの名無しさん
07/08/14 09:43:48
OnItemActivate の二つ先に Activation プロパティがある。その解説読んでみ。
> 「単なる点線囲み状態」「BackColorが色付く状態」
ListViewItem にそれぞれ対応するプロパティがある。
TreeView は単一選択なんでこの辺は無関係。
644:デフォルトの名無しさん
07/08/14 09:49:15
>>639
ほんとは引数で渡した方がいい
テキストボックスも直接公開するんじゃなくてForm1にString型のプロパティを定義した方がいい
でもどうせ使い捨てなら別にどうでもいい
645:640
07/08/14 14:15:33
>>643
ご指導どうもです、この 「点線囲み状態」 は ListViewItem の Focused プロパティに
関係ありそうですね。さらにあちこち見て調べてみます。
ありがとうございました!
646:デフォルトの名無しさん
07/08/14 15:07:48
>>627
プププ何コイツ
久々に笑わせられたぜww
>数学的に言えば「一辺1ピクセルの面」だ。
何が数学的だよ1ピクセルはプログラム上は点に決まってんじゃん。www
>e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
ちゃんと4ピクセルの面を指定しるじゃん。wwwうぇwww
FillRectangleってのは領域の内側を塗るんだよ。おバカさん
内側ってのは右辺と下辺から1ピクセル分引いた値。w
で結果1ピクセル分だけ塗られているだけだぽwww
直線上にない異なる3点以上を指定しないと面にならないことくらい
消防でも知ってるっつうの。
>一辺1ピクセルの面 プププププww
一番小さい面は3ピクセルの三角形だよwwwwww
ってかムキになってる638はその前に氏ねよwww。
こいつらくだんね。
647:デフォルトの名無しさん
07/08/14 15:15:40
( ゚д゚)ポカーン
648:デフォルトの名無しさん
07/08/14 16:09:05
>>646
>FillRectangleってのは領域の内側を塗るんだよ。おバカさん
>内側ってのは右辺と下辺から1ピクセル分引いた値。w
FillRectangleには下辺の指定とかないんだけど、勝手に定義を変更しているあなたはなんなの?
>e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
これは座標(10,10)から始まる幅1高さ1の面ってことだろ?
ってか文章からして釣りだよなw
649:デフォルトの名無しさん
07/08/14 16:14:46
>>635
>僕も通常点を描くだけならFillRectangleで済ますんですが
>ただ描画するのは違うクラスでこのクラスはもう変更きかなくて
>Penと座標しか指定できないので
>困ってたんです。
こういう背景も書かずに、いきなり>>621みたいな聞き方するから、Bitmap.SetPixel/GetPixelやFillRectangleなんて話がでてきたんではないの?
『定義の使用上、通常1ピクセルの直線は描画できないDrawLineで、
1ピクセルの点を描画する方法はありませんか』
とか聞けばいいのに。
650:デフォルトの名無しさん
07/08/14 17:13:09
>>648
>これは座標(10,10)から始まる幅1高さ1の面ってことだろ?
これ読んだら吹いたwww
お前633で「点」ってのは直線じゃないだろう?
って言ってたじゃん。
点は直線じゃないが面になるのかよwww
お前まさか座標のことピクセルとピクセルの間だと思ってないかww
GetPixelでカラー取得できなくなるっちゅうのwwww
Rectangle( 10, 10, 1, 1)ってのは
(10,10)(10,11)(11,10)(11,11)の4点を表すんだよwww
DrawRwctangleやってみろよwwうぇぇぇぇwwww
>1ピクセルの面なんてねぇぇぇよwwうふ
651:デフォルトの名無しさん
07/08/14 18:14:34
>>650
俺は627で「1ピクセルってのは点じゃなくて幅1高さ1の面だ」って言ってるんだが…。
だからこそ1ピクセルの「いわゆる」点を書くのは、面を塗りつぶす
e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
だと言うているんだが…?
目に見える「点」なんて存在しないだろ?
お前の言いたい事がてんでわからん。
652:651
07/08/14 18:16:58
>>650
e.Graphics.FillRectangle(Brushes.Black, 10, 10, 1, 1)
ちなみにこれは座標(10,10)だけが塗りつぶされます。
あおる前に試してから書き込め、糞が。
653:デフォルトの名無しさん
07/08/14 19:52:58
どうでもいい
654:デフォルトの名無しさん
07/08/14 19:55:35
>>558
655:デフォルトの名無しさん
07/08/15 11:52:54
VB.NETからエクセルに出力する時の質問です。
データベースの内容をエクセルに出力したいのですが(行は100行×列は10列くらい)、
この場合、VB.NETからエクセルのセルに直接書き込んだ方が早いですか?
それとも、エクセルのマクロを呼び出して、マクロ側でデータベースの内容を
セルに書き込んでいった方が早いですか?
656:デフォルトの名無しさん
07/08/15 12:23:04
後者
657:デフォルトの名無しさん
07/08/15 15:17:28
教えてください。
DataGridViewにて、指定したセルの左上の座標を取得する方法はありますでしょうか?
ありましたらその方法を教えてください。
宜しくお願いします。
658:デフォルトの名無しさん
07/08/15 15:22:30
DataGridViewのメンバに目を凝らすんだ
659:657
07/08/15 15:52:18
>>658
AccessibilityObjectプロパティを利用して解決できました。
660:デフォルトの名無しさん
07/08/15 20:51:23
Windowsフォームで別スレッドからコントロールを操作するには?
(URLリンク(www.atmarkit.co.jp))
引数がない場合、サンプルのように次の書き方でOK。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Focus()
End Sub
↓
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As New Thread(New ThreadStart(AddressOf worker))
t.Start()
End Sub
Delegate Function FocusDelegate() As Boolean
Sub worker()
' textBox2.Focus()の実行
Invoke(New FocusDelegate(AddressOf TextBox2.Focus))
End Sub
次のように引数も渡したい場合、どのように書きなおせばよいのでしょうか?
Dim dtNow As DateTime = DateTime.Now
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
TextBox2.Text += dtNow.ToString() & vbcrlf
End Sub
↓
?
661:デフォルトの名無しさん
07/08/16 09:59:26
文字列のフォーマットについて教えてください。
"abcdefgh" という文字列を "abcd-ef-gh" という風に変換したい場合、
VB6の時は
Format("abcdefgh","@@@@-@@-@@")
で出来ました。
これをVB2005で表現するには、
VB6.Format("abcdefgh","@@@@-@@-@@")
といった風にしかできないのでしょうか?
VB6.Formatを使わずに簡単に上記操作が出来る方法があれば教えてください。
662:デフォルトの名無しさん
07/08/16 10:07:34
SubstringでぶったぎってConcatで繋げればいいよ
663:デフォルトの名無しさん
07/08/16 12:51:09
ToStringメソッドを調べると良いと。
664:デフォルトの名無しさん
07/08/16 13:05:33
TreeViewについて教えてください。
あるノードが、あるノードより上にあるか下にあるか
調べたいのですが簡単にわかる方法はありますでしょうか?
If hogeNode.index > hoge2Node.index Then
End If
ですと階層が同じでないと比較できないので困っています。
よろしくお願いします。
665:デフォルトの名無しさん
07/08/16 13:22:03
上?
666:デフォルトの名無しさん
07/08/16 13:29:26
>>665
ツリーを全展開したときに、より左上にあるものが上といった感じです。
667:デフォルトの名無しさん
07/08/16 13:34:31
TreeNode.Parentを辿って数えれば?
668:デフォルトの名無しさん
07/08/16 13:48:04
右上にあっても上?
669:デフォルトの名無しさん
07/08/16 13:58:41
上位という意味だろ
より親
670:デフォルトの名無しさん
07/08/16 15:34:46
右上も上です。
671:デフォルトの名無しさん
07/08/16 16:02:58
プロパティの質問です。
会社の先輩にクラスのフィールドは必ずプロパティで介せよ!って言われたのですが、
以下のコードのようにmfield1とmfield2の違いがよくわかりません。
mfield1はプロパティ内で入出力操作みたいなことはできるのですが、下のコードのように
特に何もしないプロパティなんて意味あるのでしょうか?こういうプロパティがクラスに沢山あるのですが、正直面倒です。
先輩に聞いたら元請にそう指示されたと言ってましたが・・・
Public Class Class1
Private mfield1 As String
Public mfield2 As String
Public Property Field1() As String
Get
Return mfield1
End Get
Set(ByVal value As String)
mfield1 = value
End Set
End Property
End Class
確かに以前Javaの引継ぎの仕事で貰ったソースも、getter、setterが無数に書かれてましたが、return とクラスの変数の割り当て以外何もしていませんでした。
いまいち利点がわかりません。
672:デフォルトの名無しさん
07/08/16 16:11:34
>>671
そのうち昔は無駄なことをしていたなぁ
ということになるからそれまでは我慢
673:デフォルトの名無しさん
07/08/16 16:41:00
C#3.0をまて
674:デフォルトの名無しさん
07/08/16 16:55:15
>>671
読み書きの処理をインターセプトして値のチェックや変換ができるというのも利点だが、
そういう処理の必要でない単純なプロパティを含む場合の利点としては
フィールドと違いInterfaceにしたり継承でoverrideできること。
特にリモート呼び出しなどではInterfaceであることは重要になる。
その為プロパティが花盛りなのは事実だが大半が単純な構造のプロパティであることから、
プロパティによるコードの増大を何とかしようとする動きはある。
1.IDEのサポート機能で強引にsetter/getterを大量生産する。
2.基本的な構造のプロパティを簡単な構文で書けるようにする。
3.パブリックなフィールドは自動的にプロパティにする。
1は現状のJavaやらC#で盛ん。
2と3は言語の拡張で対応。次版のVBやC#はこの方向。
3はあまりみないが、VB6のActiveXクラスのパブルックフィールドがこのやり方だった。
675:デフォルトの名無しさん
07/08/16 20:02:10
>660
解決しました。
660の質問は却下します。
676:デフォルトの名無しさん
07/08/16 21:38:41
>>664
nodeにlevelってプロパティがあった様な。
677:デフォルトの名無しさん
07/08/16 21:48:32
質問させてください。
ドラッグアンドドロップのコードを記述してるのですが、
ドラッグ元のオブジェクト名を取得するにはどうすればいいのでしょうか?
VB2005EEを使っています
678:デフォルトの名無しさん
07/08/16 21:54:51
オブジェクト名って何さ
型名? それともひょっとして変数の名前のこと?
679:デフォルトの名無しさん
07/08/16 22:09:06
>>678
picturebox1とかlabel1みたいなクラス?の名前のことです
680:デフォルトの名無しさん
07/08/16 22:14:08
1付きはForm1以外はクラス名じゃなくて変数名だと思うぞ
で、そんなもんは仮の名前なのでとれるわけもないが
結局その名前を使って何がしたいの?
681:デフォルトの名無しさん
07/08/16 22:14:30
おまえ却下てw
682:677
07/08/16 22:24:00
ドラッグ元の画像をドラッグ先の画像にドラッグアンドドロップしたときに
ドラッグ元の画像を非表示にしたかったのですが、ドラッグ元の情報を
どうやって取得したらいいのか分からなかったので質問しました。
683:デフォルトの名無しさん
07/08/16 22:29:25
DoDragDrop の返り値見てドラッグ元側が処理すればいい
ドラッグ元とかドラッグ先とかの状況が分からないから一般論だが
684:671
07/08/17 00:09:30
>>674
ありがとう。とりあえずプロパティにしておくのは間違いではないのですね。
ググルと既にJava界ではgetter setterでいろいろ賛否両論が行われてました(@ITの掲示板はついて行けませんでしたが…)
しかし、オブジェクト指向のソースとか何の為?って思う箇所が多々あって辛い。
周りに詳しい人もいないんで、何を頼りにすべきか…。デザインパターンとかとりあえず目を通した方が良いのかな。
685:デフォルトの名無しさん
07/08/17 10:49:21
質問です。
DataGridViewで、”スクロールバーが現在表示されているかどうか”を取得できるプロパティみたいなものはあるのでしょうか?
それともDataGridViewの高さ(幅)と、表示されている行(列)の高さ(幅)の合計を比較するしかないでしょうか?
686:デフォルトの名無しさん
07/08/17 13:40:41
DataGridViewを継承したコントロールですと、
HorizontalScrollBar.Visible
で判定できるみたいですね。
それでいってみます。
687:デフォルトの名無しさん
07/08/17 15:27:14
Textbox(Multiline)のIMEModeの挙動がおかしいです。
No Control に設定(デフォのまま)してあるのに、実行時に
普通に入力できていたのに突然、カナ入力になったり、
オフ固定になったりします。
フォーカスが、他のアプリなどへ移動して、再度該当の
TextBoxに来た時に症状がおきやすい様ですが、明確な
発生状況の原因は突き止められていません。
ネットで検索した所、似たような症例が見受けられたが、
クリティカルな回避方法が分かりません。
何か良い方法はありませんでしょうか?
688:デフォルトの名無しさん
07/08/17 21:52:19
以下のソースで文字をPictureBox1に描画してるのですが、
この文字を、BMP保存したい場合どうすればいいのでしょうか?
Dim g As Graphics = PictureBox1.CreateGraphics() ' PictureBox1のGraphicsオブジェクトを取得
Dim fnt As New Font("MS 明朝", 20, FontStyle.Bold) ' フォントオブジェクトの作成
g.DrawString("文字をを描画", fnt, Brushes.Blue, 50, 20) ' 文字を描画
'リソースを開放する
fnt.Dispose()
g.Dispose()
689:デフォルトの名無しさん
07/08/17 21:56:53
普段から直接描くんじゃなくてBitmapに描くようにすればいいよ
690:デフォルトの名無しさん
07/08/17 21:57:14
Graphics.FromImage(Bitmap)で取得したオブジェクトに対して描画してBitmap.Save
保存しない場合でもPictureBoxに直接書くよりBitmapに描画してDrawImageの方がいいと思うよ
691:デフォルトの名無しさん
07/08/17 22:04:38
>698,690
うまくいきました、ありがとうございます
692:デフォルトの名無しさん
07/08/17 22:58:20
すみません、教えてください。
TreeView において、+ 印をクリックしたときにも、MouseUp イベントが発生する
のですが、、
それを、Node 本体をクリックしたときと区別する方法はあるものでしょうか?
IsSelected プロパティを見てみたのですが、無関係のようで、どうしたらいいもの
かと思いまして。すみませんがよろしくお願いします。
693:デフォルトの名無しさん
07/08/17 23:13:02
NodeMouseClick とかじゃ駄目か
.NET 1.1 以前なら駄目か、じゃあ HitTest だな
694:デフォルトの名無しさん
07/08/17 23:26:06
>>693
どうもです。
2.0でしたが、NodeMouseClick でもやはり + 印の方でも反応していました。
HitTest でしたか。調べてみます、ありがとうございました!
695:デフォルトの名無しさん
07/08/18 08:47:26
>>692
TreeViewMouseDownで
マウスダウンポイント = New Point(e.X, e.Y)
選択ノード = ツリービュー.GetNodeAt(マウスダウンポイント)
範囲 = 選択ノード.Bounds()
If 範囲.Contains(マウスダウンポイント) Then
ボディを選択した
Else
+を選択した
End If
696:デフォルトの名無しさん
07/08/18 12:15:27
>>695
おお!!そうやってやるのですか!!!
すばらしい、どうもありがとうございました!!
助かりました!!!
697:デフォルトの名無しさん
07/08/18 15:07:21
VS2005のIDEですが、ソースコード・エディタ上でマウスであちこちクリックしたり、
検索で移動したり、「シンボルの検索結果」での選択で移動したり、とこれらの操作で
キャレットの位置が変わっていったとき、その位置を復元して逆たどるためのツールボタン
があったと思うのですが、
PCが壊れて、別のPCに変えて同じボタンと思われるものを使ってみたのですが、
同じその機能が働いてくれません。
この機能のボタンはありますよね。なんという名前のボタンかがわかりません。
(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)
698:デフォルトの名無しさん
07/08/18 15:13:24
そういうのって人に聞くより自分で実際やってみる方が早くないか?
それともIDEのメニューやツールバーのカスタマイズ方法を知らないの?
699:デフォルトの名無しさん
07/08/18 15:56:40
>>697
ですから、それをやってみたと書いていますが・・・。それでもできなかったもので。
↓
(試してみたのは、「前の検索結果1の場所へ移動」「前の検索結果2の場所へ移動」
「前の場所へ移動」などですが、これらでは復元しませんでした。ツールボタンの欄で
右クリック->「ユーザー設定」->「編集」を選択->その中のボタンから選択してみました。)
700:デフォルトの名無しさん
07/08/18 17:14:24
進む、戻る、かなんかのボタンだよね
俺も見つかられんのだわw
701:デフォルトの名無しさん
07/08/18 17:14:55
たしかすごい意外なとこにあった記憶はあるんだが…
702:デフォルトの名無しさん
07/08/18 17:46:36
分類:表示 の 一番下のほうにある 戻る か?
703:697
07/08/18 20:36:38
>>702
あー、それでした!!どうもありがとうございました!
704:デフォルトの名無しさん
07/08/20 01:05:24
質問なんですが、フォントスタイルに太字と斜体の両方を
設定した場合に、太字(もしくは斜体)のみを標準状態に
戻す場合のコードってどう書けばいいのでしょうか?
705:704
07/08/20 01:12:05
自己解決しました、お騒がせしました。
706:デフォルトの名無しさん
07/08/20 09:31:20
どれだけ下らなく稚拙な質問でも、同じ疑問を持ってるやつがいるかもしれないから、
自己解決した場合でも、解決法は書くべき。
現在のスタイル-太字
TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Xor FontStyle.Bold)
ちなみに
現在のスタイル+太字
TextBox1.Font = New Font(TextBox1.Font, TextBox1.Font.Style Or FontStyle.Bold)
707:デフォルトの名無しさん
07/08/20 12:31:46
地獄への道は善意で舗装されている、という言葉の意味を706は噛み締めるべきだね。
そういう「善意」は、結局のところ、基礎の理解や自分の頭で考えることをスキップする
「コピペ馬鹿」を生み出すだけだと思うが。
708:デフォルトの名無しさん
07/08/20 13:14:31
>>707
善意から莫迦が産まれるとでも思ってんのか?
莫迦は元々莫迦なんだよ。
709:デフォルトの名無しさん
07/08/20 14:47:18
まあ少なくとも馬鹿を矯正するスレじゃないからね
710:デフォルトの名無しさん
07/08/20 16:43:07
質問答えたらだめじゃんw
711:デフォルトの名無しさん
07/08/20 17:36:01
コントロールを名前で選択するにはどうすればいいのでしょうか。
例えばForm1上にButton1があったとすると、
Dim btn As Button = hoge("Button1")
みたいなことがしたいのです。
ググると、Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
探すというのは見つけたのですが、名称からダイレクトに選択したいです。
712:デフォルトの名無しさん
07/08/20 18:27:44
またコントロールを名前で選択したいです厨か
713:デフォルトの名無しさん
07/08/20 20:42:55
>>711
>Form上のコントロールのコレクションをFor eachで回して、名前が一致するかどうかで
>探す
という関数を作成すれば
>名称からダイレクトに選択
できますよ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4740日前に更新/252 KB
担当:undef