C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: ユーザーコントロール Form側の名称


(過去ログ 29 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■13689 / inTopicNo.1)  ユーザーコントロール Form側の名称
  
□投稿者/ しほちゃん★ (6回)-(2008/02/01(Fri) 16:49:10)

分類:[.NET 全般] 

環境はvb2005です。

UserControlTextって名前のコントロールを作成いたしました。

Form1でUserControltextを6つはりつけました。

UserControltext内のtext1で値を入力した時にポップアップ画面にとばします。

ポップアップ画面ではUserControltextの1〜6のどのtext1からとんできたか必要です。

text1の名称は  Dim wkstr As String = DirectCast(sender, Control).Name
でとれましたがUserControltext1〜6の名称はすべて同じでしたので

Formで決めたUserControltextの名称が必要です。

ご回答よろしくお願いいたします。
引用返信 編集キー/
■13692 / inTopicNo.2)  Re[1]: ユーザーコントロール Form側の名称
□投稿者/ 魔界の仮面弁士 (596回)-(2008/02/01(Fri) 17:39:18)
No13689 (しほちゃん★ さん) に返信
> UserControlTextって名前のコントロールを作成いたしました。
それは具体的に、どのようなコントロールなのでしょうか?
とりあえず、「UserControl に TextBox を一つだけ貼った物」だと解釈して回答します。


> Form1でUserControltextを6つはりつけました。
> UserControltext内のtext1で値を入力した時にポップアップ画面にとばします。
この部分を、もう少し詳しく教えてください。
入力した時に、ポップアップ画面に「何を」「どのようなコードで」とばしているのでしょうか?

それから、「とばす」は複数の意味をもつ言葉なので(skip, transfer, throw 等)、
誤解の無いよう、念のために別の言葉で説明し直して頂けると助かります。


> ポップアップ画面ではUserControltextの1〜6のどのtext1からとんできたか必要です。
text1 に入力した時(入力した直後、という意味かな?)に、ポップアップ画面に「とばす」処理を
行っているのは、どの部分ですか?
 (1) Form1
 (2) Form1 上の UserControlText1〜6
 (3) UserControlText 上の Text1

たとえば、Text1の TextChanged イベントで「とばす」のであれば、
イベント引数の sender で、Text1 自身を得られます。そこまで得られれば、
あとはその Text1 の Parentプロパティで、親となる UserControl を得られるかと。


> Formで決めたUserControltextの名称が必要です。
処理の流れが分からなかったので、あまり具体的な回答はできませんが、
現在アクティブになっているコントロールを得たいという意味であれば、
ActiveControl プロパティで得られるかと思います。

アクティブかどうかは関係無く、単に名称を得たいだけなら、そのコントロール自身は、
 Me.Name
で、自分の名前を得られるでしょうし、Form側からなら、
 対象コントロール.Name
で名前を得られるかと思いますよ。


ただ、あまりデザイン時の「名称」には頼らない方が安全かもしれません。
今回のケースでは大丈夫なのかもしれませんが、Name プロパティ自体は
実行時に変更可能なので、たとえば、コントロールの利用者が
 Label1.Name = "Label2"
 Label2.Name = "Label1"
のように、名前を変更してしまう事も許可されていますし。
引用返信 編集キー/
■13693 / inTopicNo.3)  Re[1]: ユーザーコントロール Form側の名称
□投稿者/ Hirotow (173回)-(2008/02/01(Fri) 17:40:20)
ぶっ飛んでエスパーすると:
DirectCast(sender, Control).Parent.Nameでいいのでは?
引用返信 編集キー/
■13695 / inTopicNo.4)  Re[2]: ユーザーコントロール Form側の名称
□投稿者/ しほちゃん★ (7回)-(2008/02/01(Fri) 18:32:21)
No13692 (魔界の仮面弁士 さん) に返信
> ■No13689 (しほちゃん★ さん) に返信
>>UserControlTextって名前のコントロールを作成いたしました。
> それは具体的に、どのようなコントロールなのでしょうか?
「UserControl に TextBox を8つだけ貼った物」です。

>>Form1でUserControltextを6つはりつけました。
>>UserControltext内のtext1で値を入力した時にポップアップ画面にとばします。
> この部分を、もう少し詳しく教えてください。
> 入力した時に、ポップアップ画面に「何を」「どのようなコードで」とばしているのでしょうか?
>

textboxに入力したshohinCDからSELECT文でレコードを検索してレコードが2個以上の時に
ポップアップ画面がshowdialogされます。

>>ポップアップ画面ではUserControltextの1〜6のどのtext1からとんできたか必要です。
> text1 に入力した時(入力した直後、という意味かな?)に、ポップアップ画面に「とばす」処理を
> 行っているのは、どの部分ですか?

 (3) UserControlText 上の Text1  です。
なのでどのUsercontrolのtext1からshowされたかが必要になりました


> アクティブかどうかは関係無く、単に名称を得たいだけなら、そのコントロール自身は、
>  Me.Name

コントロールの名前(UserControltext)はとれるのですが
Formにはりついた名称はとれません。(UserControltext1〜6の名称)

もうすこし説明を補足いたしますと

shohincdには数桁の数字をいれて検索します。
そして SELECT 〜  ShohinCD LIKE " & (Me.txtShohinCD.Text + "%")
あてはまる商品が2個以上あればポップアップ側でその商品がdatagridで全部でてきます。
それをダブルクリックいたしますと
UserControltext内のtext2からtext4に商品の情報が格納されます。

Usercontroltext1.text1からポップアップ画面をshowdialogして
商品を選んでダブルクリックしますと値は正規にはいります

二回目以降ははいりません。予測ですが二回目もUsercontroltext1.text1からshowdialogされた状態になっています。
それを回避するにはUsercontroltext1.textでshowdailogするとき親はどのUsercontrolかがわかれば
そのあとのポップ画面からの代入もSELECTでわけられると考えてます。

なのでFormにはりついたUSerconrolの名称のとりかたを検索しています。
長くなっていましました 





引用返信 編集キー/
■13696 / inTopicNo.5)  Re[2]: ユーザーコントロール Form側の名称
□投稿者/ しほちゃん★ (8回)-(2008/02/01(Fri) 18:36:34)
No13693 (Hirotow さん) に返信
> ぶっ飛んでエスパーすると:
> DirectCast(sender, Control).Parent.Nameでいいのでは?

そのままはりつけとことろStrig型をwindows.forms.form型に変換できません。
となりました。

ご回答ありがとうございました。^^
引用返信 編集キー/
■13699 / inTopicNo.6)  Re[3]: ユーザーコントロール Form側の名称
□投稿者/ やじゅ (82回)-(2008/02/01(Fri) 19:29:25)
No13695 (しほちゃん★ さん) に返信
>
> 
> なのでFormにはりついたUSerconrolの名称のとりかたを検索しています。
> 長くなっていましました 
>

UserControl側にプロパティを作成して、最終Enter位置のコントロール名なりを格納して
プロパティで取得できるようにでもすればいいかな

引用返信 編集キー/
■13700 / inTopicNo.7)  Re[3]: ユーザーコントロール Form側の名称
□投稿者/ 魔界の仮面弁士 (598回)-(2008/02/01(Fri) 19:41:47)
No13695 (しほちゃん★ さん) に返信
> textboxに入力したshohinCDからSELECT文でレコードを検索してレコードが2個以上の時に
> ポップアップ画面がshowdialogされます。

IntelliSense や、AutoComple 、あるいは google サジェストのようなものかな?

TextBox の KeyPress や TextChanged などから、入力と同時に、
リアルタイム検索で表示されるような物を連想しました。


>   (3) UserControlText 上の Text1  です。
> なのでどのUsercontrolのtext1からshowされたかが必要になりました
であれば、Text1 自身のインスタンスは、すぐに得られますよね。
あとは、その Parent を辿れば、UserControl のインスタンスも得られるので、
「名称」に頼る必要も無くなるかと。


>>アクティブかどうかは関係無く、単に名称を得たいだけなら、そのコントロール自身は、
>> Me.Name
> コントロールの名前(UserControltext)はとれるのですが
> Formにはりついた名称はとれません。(UserControltext1〜6の名称)

…? おかしいですね。
"UserControltext" を得るのであれば、Me.GetType().Name とせねばならないハズですが。

下記の UserControl を貼り付けて、ダブルクリックしてみてください。
コントロールの名前が得られませんか?

Public Class UserControltext

    Private Sub UserControltext_DoubleClick( _
        ByVal sender As Object, _
        ByVal e As EventArgs) Handles Me.DoubleClick

        MsgBox("名前=" & Me.Name & vbCrLf & "型名=" & Me.GetType().Name)
    End Sub

    Private Sub UserControltext_Load( _
        ByVal sender As Object, _
        ByVal e As EventArgs) Handles Me.Load
        Me.BackColor = Color.ForestGreen
    End Sub
End Class


> 予測ですが二回目もUsercontroltext1.text1からshowdialogされた状態になっています。
「予測」でコーディングするのは危険な気がしますが…。

引用返信 編集キー/
■13747 / inTopicNo.8)  Re[4]: ユーザーコントロール Form側の名称
□投稿者/ しほちゃん★ (10回)-(2008/02/04(Mon) 11:26:51)
No13700 (魔界の仮面弁士 さん) に返信
> ■No13695 (しほちゃん★ さん) に返信
> "UserControltext" を得るのであれば、Me.GetType().Name とせねばならないハズですが。
>
> 下記の UserControl を貼り付けて、ダブルクリックしてみてください。
> コントロールの名前が得られませんか?
>
> Public Class UserControltext
>
> Private Sub UserControltext_DoubleClick( _
> ByVal sender As Object, _
> ByVal e As EventArgs) Handles Me.DoubleClick
>
> MsgBox("名前=" & Me.Name & vbCrLf & "型名=" & Me.GetType().Name)
> End Sub
>

失礼いたしました。
me.nameでUserControlText1の名前をとることができました。
勘違いしていました。
うまくいくとおもいます。
いつも適切なアドバイスありがとうございます。^^
引用返信 編集キー/
■13756 / inTopicNo.9)  Re[4]: ユーザーコントロール Form側の名称
□投稿者/ しほちゃん★ (12回)-(2008/02/04(Mon) 16:10:15)
No13699 (やじゅ さん) に返信
> ■No13695 (しほちゃん★ さん) に返信
>>
> > 
>>なのでFormにはりついたUSerconrolの名称のとりかたを検索しています。
>>長くなっていましました 
>>
>
> UserControl側にプロパティを作成して、最終Enter位置のコントロール名なりを格納して
> プロパティで取得できるようにでもすればいいかな
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -