VB.NET質問スレ (Part22 ..
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で回して、名前が一致するかどうかで
>探す
という関数を作成すれば
>名称からダイレクトに選択
できますよ。
714:デフォルトの名無しさん
07/08/20 21:01:40
>>711
Form.Controls(string)
やめとけやめとけやめとけやめとけ
715:デフォルトの名無しさん
07/08/20 21:04:12
712じゃないけど(いや712は別に何も言ってないがw)
>>711みたいな「要求」は、ほとんどの場合勘違いの産物だと思うぞ。
ありていに言えば頓珍漢なんだよたぶん。
716:デフォルトの名無しさん
07/08/20 21:49:53
>>711は結局それで何がやりたいのだろう
717:デフォルトの名無しさん
07/08/20 21:53:11
ちゃんと理解してて目的があって使うならいいんだけど
>>711はそれ以外に方法がないと思い込んでるだけだろうな
718:デフォルトの名無しさん
07/08/20 23:06:46
ListView上をMouseでClickしたとき、何かのListViewItemをHitすると
MouseUpイベントが連続して2回立つ、ということはありうるでしょうか?
そういう現象が出て悩んでいました。
下に何もないところをClickしたときはMouseUpは正常に一回しか立たない
のですが、下にItemがあるところをMouseでClickすると、2回連続してMouseUpが
立つのでした。
そのためか、そのListViewItemは、選択された印のBackColorが付かず、
Selected状態になっているのかどうかわからないのでした。
MouseDownイベントを挟まずにMouseUpが2回連続するというのは変だと
思うのですが、どこを通ってきてそうなっているのかわからないのでした。
こういう現象になった方いらっしゃったら何かご指導ください。よろしくお願いします。
719:デフォルトの名無しさん
07/08/21 01:21:52
>>718
ありうるかどうかはdebug.printしてみればわかる。
720:デフォルトの名無しさん
07/08/21 07:53:11
DirextXを使用しているものから色を取得して判定したいのですが
Win32APIのGetPixel等では不可能のようでしたが、何か良い方法は
ないでしょうか。
721:711
07/08/21 09:20:41
>>714さんの方法でできました。ありがとうございました。
やりたいことは、
722:デフォルトの名無しさん
07/08/21 09:59:05
>>719
そうなのです、それをやってみた結果、それがわかったのでした。
MouseUpというのはMouseDownが起きて初めて起こるはずなので、Upだけ
2回連続するというのは、理屈でいけばおかしいと思われました。
しかし、確かにDownを挟まずに、2回通っているのでした。
これは、どこかでDownに準じる何かが起きているが、それがおもてに
現れずにいるというようなことなのか、それとも、どこかまだ不明なところを
経由して再びMouseUpが実現してしまうという構造なのか・・・??
それで、そういったことは起こりうるのか、それが疑問になったのでした。
で、現実にItemが選択状態のBackColorにならない、ということは、その
2回連続しているMouseUpがおきてしまうことと関係があるのだろう、
と推測されたわけでしたが、どなたかアドバイスがありましたらお願いしますです。
723:デフォルトの名無しさん
07/08/21 10:14:55
>>720
DirextXを使用している「もの」って具体的に何
>>722
再現しなかったのでした。
そのListViewItemについて詳しく教えてほしいと思ったのでした。
724:デフォルトの名無しさん
07/08/21 10:19:28
>>723
スルーされるの覚悟ですが、フルスクリーンで動作するゲームです。
DirectXについて詳しくないのですが、普通にSpy++でハンドル調べて
Findwindow等で取得したハンドルを使ってGetPixelしたのですが
駄目でした。
725:デフォルトの名無しさん
07/08/21 10:29:50
普通にGraphics.CopyFromScreenでできない?
726:デフォルトの名無しさん
07/08/21 10:35:20
有り難う御座います。帰ってから試してみます。
727:デフォルトの名無しさん
07/08/21 11:31:28
行列クラスを作ろうとしています。今、
Dim ary(,) As Integer = {{1, 0}, {0, 1}}
Dim matrix As New Matrix(ary)
のようにやっていますが、
Dim matrix As New Matrix({{1, 0}, {0, 1}})
とやることはできないでしょうか。
また、a22 = matrix(2, 2) で a22に1が入るなどとやりたいのですが、
そういうことは可能でしょうか。
Array は Inherits できないようなので、無理なんですかね?
728:デフォルトの名無しさん
07/08/21 11:34:12
>>724
FPSゲームのチートソフトでも作る気かw
729:デフォルトの名無しさん
07/08/21 11:38:29
>>727
>Dim matrix As New Matrix({{1, 0}, {0, 1}})
コンストラクタの引数に配列をとる
>a22 = matrix(2, 2)
既定のプロパティ
730:729
07/08/21 12:00:46
すまん上の方はもうやってたな
Dim matrix As Matrix = New Matrix(New Integer(,) {{1, 0}, {0, 1}})
にするだけ
731:724
07/08/21 13:23:15
>>728
チートだなんてとんでも無い。ちょっとしたマクロ程度です。
>>725も試してみたんですが、上手く使えずWin32APIで
GetWindowDC(0)としてデスクトップ全体のDCからGetPixelしたん
ですが、DirectX(フルスクリーン)だと上手く行かないみたいですね。
今会社なので試せてませんが…。
ググってみると、どうも出来ないという話ばかりありました。
もう何て言うか、他のソフトで窓化してから組んだ方が手っ取り早い
気がしてきました。UWSCのPeekColorなんかだと出来るんですが
どうやって実現しているんだろう…。
732:デフォルトの名無しさん
07/08/21 14:23:02
DirectXとフルスクリーンには、何にも因果関係はないと思うが。
DirectXで描画しているDCを取得しないと駄目なんでないの?
733:デフォルトの名無しさん
07/08/21 14:39:07
WebBrowserコントロール内のドキュメントの反転範囲の取得は可能ですか?
734:733
07/08/21 14:40:27
連レスすいません、「クリップボードの利用は無し」が条件です。
735:デフォルトの名無しさん
07/08/21 14:43:37
>>733
可能です
736:733
07/08/21 14:45:27
>>735
ありがとうございます
737:デフォルトの名無しさん
07/08/21 14:54:33
VB2003で開発しています。
ここで質問していいかわからないので、もし他スレが適切なら
誘導をお願いします。
OSがWin2003Serverでドメインコントローラになっているサーバに
Everyoneでフルコントロールできる共有フォルダがあります。
この共有フォルダに、LANで繋がっているOSがXpHomeEditionのPC
からファイルをアップロードしたりダウンロードしたりするアプリを
作りたいのです。
使用するPCはちょっと特殊なPCでHomeEditionしかプリインストールされていません。
ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
しません。
クライアントがProfessionalEditionなら問題はないのですが、HomeEdition
なのでサーバの共有フォルダにアクセスしようとすると、ユーザ名と
パスワードを要求されてしまいます。
最初にエクスプローラから共有フォルダを開こうとしてユーザ名とパスワードを
通しておけば次からは要求されないので問題がないのですが、この開発中の
アプリからいきなり共有フォルダにアクセスしようとすると、ユーザ名と
パスワードが通っていないためにエラーになります。
プログラムからユーザ名とパスワードを認証させる方法はありますでしょうか?
738:724
07/08/21 14:55:53
>>732
そうなんですか。すいません。あまり詳しくなくて。。
URLリンク(oshiete1.goo.ne.jp)
この辺みて勘違いしてたかもしれません。
取りあえず、↓みたいな感じの関数で帰ってから試してみます。
有り難う御座いました。
Private Function PeekColor(ByVal x As Integer, ByVal y As Integer) As Integer
Dim ret As Integer
ret = GetWindowDC(0) 'スクリーン全体のデバイスコンテキストを取得
PeekColor = GetPixel(ret, x, y)
ret = ReleaseDC(0, ret) 'スクリーン全体のデバイスコンテキストを解放
End Function
739:デフォルトの名無しさん
07/08/21 15:00:47
>>737
WNetUseConnection
740:デフォルトの名無しさん
07/08/21 15:03:46
>>738
どんなフルスクリーンか知らんが解像度が変更されている場合もあるので気をつけれ
多分デスクトップのDCのピクセル情報はフルスクリーンキャプチャに移るのと一緒だと思うから一回撮ってペイントに貼り付けてみて確認してみるのもいいかも
741:デフォルトの名無しさん
07/08/21 15:16:15
>>737
>ドライバ類の事を考慮して、OSをProfessionalEditionに乗せかえることは
>しません。
これだけの為にProにアップグレードするべきだとは思わんが、一応教えておく。
ドライバはHomeだろうがProだろうが一緒。互換性を心配するのは間違い。
742:デフォルトの名無しさん
07/08/21 17:20:47
VB2005です。
TextBoxで未入力のときに数値の0とみなしたいのですが、次のようなやり方以外に
簡単な方法はありますか?
if textbox1.text.length = 0 then
val = 0
elseif isnumeric(textbox1.text) then
val = cint(textbox1.text)
else
'error
end if
743:737
07/08/21 17:47:49
>>738
さっそくWNetUseConnectionをぐぐってみました。
で参考になるサンプルを見つけたので
URLリンク(64.233.167.104)
真似てやってみたのですが
その関数の戻り値が 487 となり、失敗します。
で、その戻り値を調べたら
ERROR_INVALID_ADDRESS 487 0x000001E7 無効なアドレスにアクセスしようとしています。
とありました。
しかし、そのアドレスは確実に間違っていないはずなんですが・・・。
そのアドレスをエクスプローラのアドレス欄に貼り付けるとちゃんと表示されます。
これ以上はスレ違いでしょうかね?
apiスレに移動したほうがいいでしょうか?
>>741
ドライバの互換性云々というのではなく、ドライバ類がOSの再セットアップ用に
提供されていないという問題なんです。
一応、ハードディスクにはリカバリイメージが格納されているのですが
隠蔽されているっぽいのです。
ドライバCDもなく、webでも公開もされておらず・・・
744:デフォルトの名無しさん
07/08/21 18:14:50
>>743
ヒント:上書きインストール
745:デフォルトの名無しさん
07/08/21 18:33:56
>>742
それで十分簡単だと思われ。
746:727
07/08/21 18:57:05
>>729
a22 = matrix(2, 2) はできました。ありがとうございます。
Dim matrix As New Matrix({{1, 0}, {0, 1}})
の方は、以下のようにしてみましたが、式が必要です
というエラーが出ます。対策を教えていただけないでしょうか。
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim matrix As new Array2({1, 0})
End Sub
End Class
Public Class Array2
Public elements As Array
Public Sub New(ByVal ary As Array)
elements = ary
End Sub
End Class
747:デフォルトの名無しさん
07/08/21 20:15:26
>>743
Win32APIの意味や失敗の原因を調べるならWin32API質問箱スレに移動すべきだが、
Win32APIを呼び出すためのVB.NETの記述方法について知りたいなら、ここのままでも
よいのでは?
748:737
07/08/21 21:10:20
Win32API質問箱スレにいってきます。
ありがとうございました。
749:デフォルトの名無しさん
07/08/21 21:24:00
>>746
>>730
750:746
07/08/22 09:59:10
>>749
見逃してました。。。
うまく行きました。ありがとうございました。
型に配列就職誌をつけられるとは知りませんでした。
751:デフォルトの名無しさん
07/08/22 10:15:43
配列型という型なんだよ
変数名じゃなくて型名の後に括弧を付ける方がその意味では正しい
752:デフォルトの名無しさん
07/08/22 11:06:56
746はVBしかしたことないんかな
753:デフォルトの名無しさん
07/08/22 12:16:12
>配列就職誌
誤変換に生活史が見て取れる
754:デフォルトの名無しさん
07/08/22 12:44:18
Dim array As Int32() = New Int32() {1, 2, 3}
こう書いたらもうC#だなw
755:デフォルトの名無しさん
07/08/22 21:19:29
友達からVS2005をコピーしてもらったのですが、インストール方法がわかりません。
どうやらキーを入れるみたいなんですが、キーを教えてもらえませんか?
756:デフォルトの名無しさん
07/08/22 21:46:24
>>755
お前頭悪過ぎ
わざとボケたならすまない。
だが、ここでなく低脳スレに行くことをオススメする。
757:デフォルトの名無しさん
07/08/22 21:53:17
>>755
マイクロソフトに問い合わせればいいじゃん
758:デフォルトの名無しさん
07/08/23 11:13:09
VB2005を使っています。
フォームのNew()の中でInitializeComponent()が呼ばれますが、InitializeComponent()内で
設計時に設定したプロパティを設定するときに、それぞれのイベントハンドラが呼ばれたりします。
全てが初期化されるまでに呼ばれると困るイベントハンドラもあるので、今のところは
以下のようなコードでしのいでますが、VB2005に用意されている機能でこれを実現することはできますか?
Class Form1
Dim mConstructed as Boolean
Public Sub New()
InitializeComponent()
mConstructed = True
End Sub
Private Sub SomeEventHandler(...)
If Not mConstructed Then
Exit Sub
End If
End Sub
End Class
759:デフォルトの名無しさん
07/08/23 12:39:16
>>758
まあ別にそれでも良いんじゃない?
(ただ、未確認だけど自分で判定用のフィールド作らなくてもForm.Createdが使えると思う)
そういう場合はHandles句を使わずに自分でイベントを紐付けするのが正攻法だと思うけど。
760:758
07/08/23 13:04:41
>>759
前者の方法も知りませんでしたし、後者の方法も目から鱗でした!
ありがとうございました。
761:デフォルトの名無しさん
07/08/23 15:11:07
タブコントロールを使っているのですが
タブが多くなり2段になりました。
どうせなら自分の好きなタブで区切り2段になるようにしたいのですが
タブ何個で段分割するとかいう指定はないでしょうか?
762:デフォルトの名無しさん
07/08/23 15:13:15
タブサイズ調整するしかないんじゃね?
763:デフォルトの名無しさん
07/08/23 15:54:00
あきらめました!
764:デフォルトの名無しさん
07/08/23 20:58:38
諦めんのはええぇぇぇぇwwwwww
765:733
07/08/23 22:05:44
あれから探して見つかったので、聞かれていませんが一応。
WebBrowser.Document.ActiveElement.InnerText
WebBrowser.Document.ActiveElement.InnerHtml
を使ってWebBrowserの選択範囲・クリックした画像のソース等の取得ができました。クリックイベントと併用したら便利でした。
766:デフォルトの名無しさん
07/08/24 11:56:51
質問させてください。
継承コントロールでプロパティを追加した場合、デザイナでそのコントロールの該当プロパティを選択した時の説明文
(例えばFormのTextプロパティなら「コントロールに関連付けられたテキストです」)は、どこに書けば反映されるのでしょうか?
プロパティの<summary></summary>に書けば良いのかと思いましたが、そうではないようです。
解かる方、ご教示お願いします。
767:デフォルトの名無しさん
07/08/24 12:16:58
DescriptionAttribute(属性)だったかな
768:デフォルトの名無しさん
07/08/24 12:37:22
というか、そんなの自分で調べる能力がない人間がコントロールなんか作ると
間違いなくハマるよw
769:デフォルトの名無しさん
07/08/24 12:44:16
.netでEE用のソースは問題なく使えますか?
770:デフォルトの名無しさん
07/08/24 12:58:39
いーいーっていったいなんのことかな?
771:デフォルトの名無しさん
07/08/24 13:00:02
いーいーではなくEEです。
772:デフォルトの名無しさん
07/08/24 13:14:48
Erotic Elementary school girl
773:766
07/08/24 13:19:07
>>767
ありがとう!
>>768
思いつく限りの単語で調べてみたけど、わかんなかったのよ!
774:デフォルトの名無しさん
07/08/24 20:59:58
>>773
TextBox プロパティ
これでググったりMSDN見たりする頭もないのか
先行き不安だな
775:デフォルトの名無しさん
07/08/24 21:12:15
>>774
>思いつく限りの単語で調べてみたけど、わかんなかったのよ!
776:デフォルトの名無しさん
07/08/24 21:15:27
>>774
MSDNのメンバの説明ではDescription属性は省かれてる
777:デフォルトの名無しさん
07/08/25 17:44:23
>>774
継承しているコントロールがTextBoxでも無い限り、そんな単語で検索しないと思うぜ?
778:デフォルトの名無しさん
07/08/27 17:06:12
VC++から書き込まれた共有メモリを
OpenFileMapping()、MapViewOfFile()にて読み出しております。
VC++から
struct data{
char str1[256];
char str2[256];
char str3[1024];
}
という構造体、または構造体の配列が書き込まれた場合、
VB側ではどのようにすればそれぞれを受け取ることができるでしょうか
779:778
07/08/27 18:03:29
一つ思い浮かびました
Private Declare Function MovePointer Lib "mydll" _
(ByVal ptr As IntPtr, _
ByVal movesize As Integer _
) As IntPtr
・・・他に真っ当な方法は無いでしょうか(汗
780:デフォルトの名無しさん
07/08/27 18:05:03
Marshal.PtrToStructure
781:778
07/08/27 18:31:03
>>780
ありがとうございます。
nAddress = MapViewOfFile(hOpened, FILE_MAP_READ, 0, 0, 0)
str1 = Marshal.PtrToStringAnsi(nAddress)
と先頭を取ることはできるのですが、
Public Structure DATASTRUCT
Dim str1 As String
Dim str2 As String
Dim str3 As String
End Structure
Dim cds As DATASTRUCT
cds = CType(Marshal.PtrToStructure(nAddress, GetType(DATASTRUCT)), DATASTRUCT)
ですと、
「オブジェクト参照がオブジェクト インスタンスに設定されていません」のエラーが出てしまいます。
Marshal.PtrToStructure()をどのように使えば宜しいでしょうか
782:デフォルトの名無しさん
07/08/27 18:47:35
>>781
MSDNライブラリ読めばいいのに。
たぶんDATASTRUCTの定義が不適切。
URLリンク(msdn2.microsoft.com)(VS.80).aspx
783:778
07/08/27 19:02:11
>>778
ありがとうございます。
どこを読めばいいのかさっぱりの状態でしたorz
Public Structure DATASTRUCT
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Dim str1 As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _
Dim str2 As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=1024)> _
Dim str3 As String
End Structure
としたところうまくいきました!
構造体のメンバのサイズを宣言できるんですね!
(散々ググったページには「できない」とあったのですが・・・)
大変助かりましたありがとうございましたm(_ _)m
784:778
07/08/27 19:04:37
間違えました>>782さんでした。
>構造体のメンバのサイズを宣言できるんですね!
Stringのサイズ(固定長文字列)でした。。。
785:778
07/08/27 19:22:55
申し訳ありません。
この構造体が配列で渡されたときの受け取り方をお教えいただければ幸いです。
786:デフォルトの名無しさん
07/08/27 19:50:19
質問です。
エクセルの20個のファイルに(1a、2b・・・から20tとする)のファイル名
をそれぞれにつけて、とある1つのディレクトリにまとめて保存し
たそれらを一つずつオープンして、それぞれのファイルのSheet1
にあるセルの情報(それぞれのファイルで1行目(1,1)〜(1,40)に
まとめてある)を、情報をまとめるためのファイル「Answer」のSheet1に
1行ずつ出力するプログラムを教えていただけないでしょうか。
(最終的にはAnswerのSheet1は20行情報が貼り付けられることになります)
(ファイル名に規則性がなくても出来るのであればなお嬉しいです)
どうかよろしくお願いしますm(_ _)m
787:デフォルトの名無しさん
07/08/27 20:09:38
>>786
Excel操作はここら辺を参考にがんばって。
URLリンク(jeanne.wankuma.com)
URLリンク(msdn.microsoft.com)
788:デフォルトの名無しさん
07/08/27 20:11:33
>>785
>>782の前後に書いてる
789:デフォルトの名無しさん
07/08/27 22:10:29
programingなんてやめちまえよ。
たとえるなら、薬師みたいなもんだよ。
調合の材料を客先に持ち込んで、客に合わせて調合するんだ。
もちろん、調合の仕方を覚えてれば、調合は早いだろうけど、リファレンス見ながらでも誰も怒らないよ。
そんな覚える技術や努力なんて馬鹿みたいだし、そんなところにしか技術の差が出ないなんて悲しいよな。
てか、薬師よりおとるかもなぁ。。薬師なら、難病を治すために適切に薬を選べるけど、programmerは、言われたように作るだけだから。。
790:デフォルトの名無しさん
07/08/27 22:22:11
薬師三尊像、まで読んだ
791:デフォルトの名無しさん
07/08/27 22:26:37
薬で難病が治るまで読んだ。最後まで読んだ。
792:デフォルトの名無しさん
07/08/27 22:38:58
薬買いにいって
えーと……とかって本見ながら調合始めたら引くよな
793:デフォルトの名無しさん
07/08/28 09:39:51
>薬師なら、難病を治すために適切に薬を選べるけど、programmerは、言われたように作るだけだから。。
言われたようにつくるだけのマもいるけど、「こんなことできないかしら?できたらいいな!」って言われて、それを成す為の最適な方法を考案するマだっているさ。
何も言われずとも「こういうものをつくったら売れるんじゃないか!?」って創作するマもいるし、病人がいないと作ったものが効果を発揮しない薬師より、マの方がいろいろ可能性はあるさ。
調合、調整、やり直しが楽なところもマの魅力。
給料は低いが!!!!(つД`)
給料の為に働いてるマも多いだろうが、自分は創る行為自身が楽しくてマをつづけている。
794:778
07/08/28 11:40:57
>>788
ありがとうございます。
プラットフォーム呼び出しによるデータのマーシャリング
URLリンク(msdn2.microsoft.com)(VS.80).aspx
配下を読んでみました。
「Marshal.Copyというものがありアドレスから整数配列を取得することが可能」
ということはわかりましたが、
アドレスから文字列を含む構造体の配列を取得する方法
についてはどうしてもわかりませんでした。
勉強不足で申し訳ございませんが、ヒントをいただけませんでしょうか。
795:デフォルトの名無しさん
07/08/28 12:44:00
>>794
とにかく一通りMSDNライブラリに目を通したほうがいいよ。
>>788がどういうつもりでああ書いているか知らないが、
恐らくArraysのサンプルが参考になるんじゃない?
あるいは、ドトネトのややこしいマーシャリングのルールに縛られるのが嫌なら、
アンマネージコードとの受け渡しは全部バイト配列でやって、Encodingとかその他使って
自分で必要に応じて手動で変換するのも一つの手かもね。
796:デフォルトの名無しさん
07/08/29 21:56:59
文字列のバイト数返す方法ないですか?
"abc123"なら6を、"テストテスト"なら12を、"あ12い"なら6
を返す感じで・・・
797:デフォルトの名無しさん
07/08/29 22:00:34
>>796
君はまず「文字列」の正体を勉強するのが先。
その後ではそういう「うかつ」なことは恥ずかしくていえなくなるだろう
798:デフォルトの名無しさん
07/08/29 22:01:11
どういうやりかたで各文字のバイト数を数えるのかが問題だ
799:デフォルトの名無しさん
07/08/29 22:05:40
>>798
ですよね・・・やっぱり無理か
800:デフォルトの名無しさん
07/08/29 22:09:49
>>797
知らないならすっこんでろ糞虫(笑)
801:デフォルトの名無しさん
07/08/29 22:11:50
string str = "シフトJISでは何byte?";
Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");
int num = sjisEnc.GetByteCount(str);
Console.WriteLine(num);
802:796
07/08/29 22:16:51
>>801
即レスありがとうございます!助かりました!!
↑のレスは自分ぽいけど偽者です・・・
>>797
恥ずかしい奴、未だにC言語シコシコ組んでる人?
803:デフォルトの名無しさん
07/08/29 22:17:54
夏だなあ
804:デフォルトの名無しさん
07/08/29 22:20:06
>>802
本気で言ってるのか?
801がほのめかしているように、今時文字列のエンコーディングはANSI(S-JIS)
とは限らない。
まあ、こういう「幸せな馬鹿」に言っても通じないかな。
805:デフォルトの名無しさん
07/08/29 22:24:13
夏だなあ
806:デフォルトの名無しさん
07/08/29 22:26:20
少なくとも>>796の
"abc123"なら6を、"テストテスト"なら12を、"あ12い"なら6
を見る限りにおいてはS-JISとみなしても正解だわな
807:デフォルトの名無しさん
07/08/29 22:35:42
「文字のエンコード」という概念を796が知っていれば、
当然Encodingクラスについても知っているか、知らなくても容易に発見しているはずで、
それならばそもそも796のような質問は発しないだろう。
質問の文面や受け答えから見て、どうみても旧VBプログラマにありがちな、
理解しもせずサンプルをコピペして使うタイプの「お馬鹿さん」だろう796は。
808:デフォルトの名無しさん
07/08/29 22:46:38
さしずめ>>797はそのお馬鹿さんの揚げ足を取って優越感を感じるタイプのカスかw
809:デフォルトの名無しさん
07/08/29 22:47:38
>>807
>「文字のエンコード」という概念を796が知っていれば、
>当然Encodingクラスについても知っているか、知らなくても容易に発見しているはずで、
おまえニュータイプかよおまえニュータイプかよ(ふかわ風に)
810:デフォルトの名無しさん
07/08/29 23:06:28
完全ド素人質問なんですけど、ラベルをキーボードの左を押したら左に自動で移動していって
それを左右上下できて、画面の端にいったら、反対側からでてくるようにするにはどうやったらいいんでしょうか?
サンプルソース等あればお願いします
811:デフォルトの名無しさん
07/08/29 23:39:37
完全ド素人スパゲッターなんですが
うまくソースを絡めるにはどうすればいいんでしょう?
ビニール樹脂製のサンプルなどがあれば、すごく…欲しいです
812:デフォルトの名無しさん
07/08/30 02:03:32
>>810
左を押したらなどはフォームのキーダウンイベントで取得
ラベルの移動はleftやtopをいじくる。
反対側から出てきるようにするにはleftとwidth、topとheightとか。
っていうかそれvbでやることなのか。
>>811
巷のプログラマーの間では
難しいプログラムをつくろうとすればするほどソースは絡みつく
と言われている。
813:デフォルトの名無しさん
07/08/30 02:13:56
>>812
学校の課題です
もうずっとやってるのにできない・・・
もうあきらめてアホみたいな量の追加課題をやるか
814:デフォルトの名無しさん
07/08/30 10:03:22
>>813
俺も勉強中の身なんで微妙だけど、こんなんでどうよ。
Private Sub MyBase_Down(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
Select Case e.KeyCode
Case Keys.Left
If Label1.Left < -Label1.Width Then
Label1.Left = Me.Size.Width
End If
Label1.Left = Label1.Left - 1
Case Keys.Right
If Label1.Left > Me.Width Then
Label1.Left = -Label1.Width
End If
Label1.Left = Label1.Left + 1
Case Keys.Up
' 処理
Case Keys.Down
' 処理
End Select
End Sub
上と下も同じような考えでおkなはず。
815:814
07/08/30 10:11:24
追記。
これだと見えなくなってから出てくるまでに時間がかかるから、Ifの条件を弄った方がいいかも。
816:デフォルトの名無しさん
07/08/30 10:48:29
とりあえずラベルを2つ使え。
そーすりゃあとは楽勝だと思うが。
817:デフォルトの名無しさん
07/08/30 13:50:23
日本語でうまく説明できないやつは
ソースも糞な傾向が多い。
818:デフォルトの名無しさん
07/08/30 14:10:18
まずは日本語を勉強したまえ
819:デフォルトの名無しさん
07/08/30 15:09:53
まずVBの本を読め
820:デフォルトの名無しさん
07/08/30 17:42:41
>>810
それほんとにラベルを使わないといけないの?
どう考えてもGraphics使って自前で描画するべき
821:デフォルトの名無しさん
07/08/30 18:31:29
>>820
宿題を課したやつも素人なんだろw
Labelをキーで動かすことを学んで何の得になるんだろうなw
822:デフォルトの名無しさん
07/08/30 18:43:21
初学者にWinフォームの基本(例えばフォーカスを失うとキーイベントは発生しない、
クライアント座標の座標系はデカルト座標ではない、とか)を体感させるには
悪くない課題だと思うけどね俺は。
というか、たかが文字列一つ動かすために自前で描画しろ、っていう奴は
恐らく自分でそんなことやったことがないんだろうねw
「ちゃんと」やろうと思ったら意外と面倒だよ。
例えばフォームにコントロールが配置してあったらどうするの?
描画するものが他にあったら、表示のプライオリティや移動した際の再描画は
どうするの?
他の描画の処理が仮に重いものだったとしたら?
無効化する領域を指定しても完全には解決できない場合があるぞ。
823:デフォルトの名無しさん
07/08/30 20:35:55
今、マウスの移動できる範囲を制限するのをつくっているんですが
Windows.Forms.Cursor.Clip = New Rectangle(0, 0, 300, 300)
などとしているんですが、これだとほかの窓をアクティブにしたりすると
制限が解除されてしまいます。
何かいい方法はないでしょうか?
824:デフォルトの名無しさん
07/08/30 21:19:48
そんな「悪意のあるソフト」ぐらい自力で作れよアホかw
825:デフォルトの名無しさん
07/08/30 21:53:43
悪意って言いたいだけだろハゲ
そのものズバリのWin32apiが公開されてんだろ低能
826:デフォルトの名無しさん
07/08/30 22:39:59
ClipCursorってのを使ってみたのですが
やはり解除されてしまうみたいです。
827:デフォルトの名無しさん
07/08/31 09:47:18
>>822
そこまで考えた課題には見えないし、より深く考えるならそれこそラベルなんぞを動かそうという発想自体がナンセンスになる。
多分スレ違いなんだよな、ここの住人は「素人」や「初心者」に過剰反応するから、優しい人が初心者スレでもつくってあげればいい。
叩きや煽りにいちいち反応してたら、ここのスレ見てらんないぜ?
828:デフォルトの名無しさん
07/08/31 12:44:37
>ラベルなんぞを動かそうという発想自体がナンセンスになる
だからラベルを動かすのは目的じゃなく手段でしょ。
何のための?
学習のためのだよ。
どうでもいいけど話の文脈(今何を話しているか?)を忘れるのは頭の悪い証拠だよ。
学校の課題として不適切、って寝ぼけたことを言う奴がいたから
必ずしもそうでもないだろって話をしてるんだけど。
829:デフォルトの名無しさん
07/08/31 13:09:11
>>828
>叩きや煽りにいちいち反応してたら、ここのスレ見てらんないぜ?
830:デフォルトの名無しさん
07/08/31 13:16:12
>>828
>学校の課題として不適切、って寝ぼけたことを言う奴がいたから
>必ずしもそうでもないだろって話をしてるんだけど。
質問スレで質問と関係ない話しないでくれる(^ω^;)?
831:デフォルトの名無しさん
07/08/31 14:16:04
>>828
なんの話だよw
帰れ
832:デフォルトの名無しさん
07/08/31 15:48:39
名前付パイプを使った通信をしております。
URLリンク(support.microsoft.com)
等を参考にして以下の通り作成いたしました。
Private Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Integer, _
ByVal lpBuffer As String, _
ByVal nNumberOfBytesToWrite As Integer, _
ByVal lpNumberOfBytesWritten As Integer, _
ByVal lpOverlapped As Integer _
) As Integer
Dim bool As Integer
Dim pipe As Integer
Dim size As Integer
pipe = CreateFile("\\.\pipe\mypipe", &H40000000, 0, 0, 4, &H80, 0)
bool = WriteFile(pipe, "ABC", 4, Size, 0)
以上を実行すると、受信側で"ABC"と4を取得し通信自体は成功はするのですが、
同時に送信側でエラーが発生してしまいます。
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
at abc.AbcvMain.WriteFile(Int32 hFile, String& lpBuffer, Int32 nNumberOfBytesToWrite, Int32 lpNumberOfBytesWritten, Int32 lpOverlapped)
WriteFileのどこに問題がありますでしょうか。
どんな些細な点でもかまいませんのでご指摘下さい。
833:デフォルトの名無しさん
07/08/31 15:53:40
>>832
試してないが、
>ByVal lpNumberOfBytesWritten As Integer, _
これ API が書き戻すんだから ByRef じゃね?
834:832
07/08/31 15:56:22
>>833
なんておマヌケorz
エラーが出なくなりました!
ご指摘ありがとうございました。
835:デフォルトの名無しさん
07/08/31 17:31:11
自作クラスのString型プロパティを多言語対応させるには?
836:デフォルトの名無しさん
07/08/31 17:36:27
>>835
頑張れ★
837:デフォルトの名無しさん
07/08/31 18:36:52
>>835
イミワカンネ
838:デフォルトの名無しさん
07/08/31 20:06:35
このスレ糸冬
839:832
07/08/31 20:23:46
申し訳ありません。もう一つ疑問についてお教え下さい。
WriteFileEx()を用いて非同期の書き込み(読み出し)をしたいと思っております。
WriteFileEx()には関数のアドレスが必要なのですが、
それを得る方法がどうしてもわかりません。
URLリンク(dobon.net)
にも同様の質問があったため、上記ページ等を参考にして
以下のように作成いたしました。
---
Delegate Sub SampleDelegate()
Public Class sampleClass
Public Sub Method()
MsgBox("Method")
End Sub
End Class
Private Declare Function WriteFileEx Lib "kernel32" (ByVal hFile As Integer, ByVal lpBuffer As String, ByVal lpNumberOfBytesWritten As Integer, ByVal lpOverlapped As Integer, ByVal lpCompletionRoutine As SampleDelegate) As Integer
Dim instance As New SampleClass
' こちらは成功する
' bool = WriteFile(pipe, "ABCDEFG", 8, size, 0)
bool = WriteFileEx(pipe, "ABCDEFG", 8, 0, AddressOf instance.Method)
---
実行しますとWriteFileExでSystem.NullReferenceExceptionが発生いたします。
これはDelegateの扱い方が悪いのでしょうか?
それとももっと根本的なことが間違っているのでしょうか?
大変恐れ入りますがお教え下さい。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4736日前に更新/252 KB
担当:undef