質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • VB.NET

    938questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • VB

    309questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

  • Visual Basic .NET

    101questions

    Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

vb.net フォームからusercontrolのlistviewのハンドリング

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,019
vb.netです。
フォームとusercontrolが別になっている状態です。

フォームにボタンがありまして、そのボタンをクリックするとusercontrolを表示します。
ここまでは成功しております。

usercontrolの中にlistviewが置いてありますが、
このlsitviewをフォームのボタンからmoduleを使ってハンドリングができないので
皆様から助けて頂きたいと思います。

--------------------------------------------------
1.フォーム側
Private Sub Button1
   call F_test()  'listview1のアイテムの個数を数える
end sub

--------------------------------------------------
2.usercontrol側
  listview1にアイテムが6個入っている状態

--------------------------------------------------
3.module側(中身は以下が全てです。)
Public Sub F_test()
        Dim xCount = ListView1.Items.Count
        MsgBox(xCount)
End Sub
--------------------------------------------------

このようにするとうまくいきませんでした。
すみませんが、よろしくお願い致します。

ListView1.Items.Count←コチラの部分ですが、このまま書くとエラーが出ます。
たぶんフォームからmoduleを通してのusercontrolのlistviewまでたどり着いてないと
思いますがその書き方がよくわかりません。


以下に2名様からコメントを頂きましたが、まだ解決できてないのですみませんが、
よろしくお願い致します。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

0

コメントからまとめました。モジュールでやる要望を前提としたコードですが。
tempObjectを何らかの方法で取得する必要がありますね。

簡単なのは退避しておくとか
Public Class Form1
    Private current As UserControl  '退避しておく
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim tempObject As New UserControl1
        Panel1.Controls.Clear()
        tempObject.Dock = DockStyle.Fill
        tempObject.Visible = False
        Panel1.Controls.Add(tempObject)
        '退避しておく
        current = tempObject
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim tempObject As New UserControl2
        Panel1.Controls.Clear()
        tempObject.Dock = DockStyle.Fill
        Panel1.Controls.Add(tempObject)
        '退避しておく
        current = tempObject
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        Call F_Test(Me.current) '退避していたインスタンスを渡す
    End Sub
End Class

Module Module1
    Public Sub F_Test(uc As UserControl)    'インスタンスを呼び出し元から受け取る
        If uc Is Nothing Then Return
        uc.Visible = True
        uc.BackColor = Color.Red
    End Sub
End Module

あとは名前とか、インデックスとか取得の仕方を決めてやったりとか、
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim tempObject As New UserControl1
        Panel1.Controls.Clear()
        tempObject.Dock = DockStyle.Fill
        tempObject.Visible = False
        Panel1.Controls.Add(tempObject)
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim tempObject As New UserControl2
        Panel1.Controls.Clear()
        tempObject.Dock = DockStyle.Fill
        Panel1.Controls.Add(tempObject)
    End Sub

    Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
        '何らかの方法でパネルから取得する。
        '名前でもいいし順番でもいいが、要件によるしエラーチェックとかも必要
        Call F_Test(CType(Panel1.Controls(0), UserControl))
    End Sub
End Class

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/29 01:29

    お忙しい中本当に有難うございます。
    素晴らしいです。
    無事解決できました。

    Module Module1
    Public Sub F_Test(uc As UserControl) 'インスタンスを呼び出し元から受け取る
    If uc Is Nothing Then Return
    uc.Visible = True
    uc.BackColor = Color.Red
    End Sub
    End Module

    ←この内容の中から「(uc As UserControl)」を 「(uc As UserControl1)」にしたら希望の動きを取る事ができました。

    本当に感謝します。

    キャンセル

0

あなたの書かれている
Public uc As New UserControl1 
Public Sub F_test() 
    Dim xCount = uc.ListView1.Items.Count 
    MsgBox(xCount) 
End Sub 
は、新たにUserControl1のインスタンスをもう一つ作り、そのプロパティを参照しているだけの別物です。

同じものを共有するためには、ByRefで参照を渡すとかSharedにしてインスタンスを一つに保つなどがありますが、Sharedは個人的にはあまりお勧めしません。
デバッグが難しくなるためです。

F_callプロシージャの具体的な中身が分からないため的外れなことを言っているかもしれません。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/27 08:32

    すみません。同じコードを何回も使うのでmoduleにして呼び出ししています。サンプルは簡単に書いてありますが、フォームからmoduleを使ってのusercontrolの認識ができないことでございます。

    キャンセル

0

先ずは、
Modifiers プロパティ
GenerateMember プロパティ
について、ググってみてください。
その上で、該当ユーザーコントロールに、
必要としている機能があるのか、無いのかを確認した上で、
機能を追加して、List(Of T) の形式などで、データを取得できる様にするのか、
現在の様に、外部コードからユーザーコントロール内の、コントロールのデータを
取得するのかを、考えます。

私だったら、
ユーザーコントロールを使うのですから、必要な機能がなければ、
ユーザーコントロールへの機能の追加か、機能の拡張をすると思います。

今回の様に、
>2.usercontrol側 
>listview1にアイテムが6個入っている状態 
を、想定した場合は、
List<Of String> でアイテムを出し入れできるコード
現在選択中の、行列と、アイテムを返すコード
を、ユーザーコントロールに用意すると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/27 08:31

    すみません。同じコードを何回も使うのでmoduleにして呼び出ししています。サンプルは簡単に書いてありますが、フォームからmoduleを使ってのusercontrolの認識ができないことでございます。

    キャンセル

  • 2015/04/28 10:58

    >フォームからmoduleを使ってのusercontrolの認識ができないことでございます。
    ユーザーコントロールの配置の方法には、
    1.ツールボックス上に配置される、ユーザーコントロールをフォームへ配置する。
    2.プログラムから、動的に配置する。
    方法がありますが、2の方法は、慣れていない方では、デバッグ困難になりますので、
    まずは、1の方法で、フォームから確認できる方法で、配置して、
    その後確認できた時点で、2の方法へ、移行します。

    キャンセル

  • 2015/04/28 11:16

    ’プログラム例:System.Globalization を取得する。
    ’C#ですので、このままでは、VB.NETでは動きません
    ’機能確認サンプルですので、機能、コードの質が適当ではない可能性があります。

    <<ユーザーコントロール例>>
    ```lang-<C#>
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Drawing;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    //
    using System.Globalization; //グローバライゼーション

    namespace SupportClass
    {
    public partial class dgvEncodings : UserControl
    {
    //*****************************************************************************************
    //enum:列挙型
    //*****************************************************************************************
    public enum enumID : int
    {
    ID_Encodings, //display ID & Encodings
    ID_Cultures, //display ID & Cultures
    Encodings, //display Encodings
    Cultures, //display Cultures
    }

    //*****************************************************************************************
    //property:プロパティ
    //*****************************************************************************************
    /*
    [属性名(属性パラメータ)] http://ufcpp.net/study/csharp/sp_attribute.html
    アクセスレベル 型名 プロパティ名
    {
    set
    {
    // setアクセサー(setter とも言う)
    // ここに値の変更時の処理を書く。
    // value という名前の変数に代入された値が格納される。
    }
    get
    {
    // getアクセサー (getter とも言う)
    // ここに値の取得時の処理を書く。
    // メソッドの場合と同様に、値はreturnキーワードを用いて返す。
    }
    }
    */
    enumID IDdisplayVal = enumID.ID_Encodings;
    public enumID IDdisplay
    {
    set
    {
    IDdisplayVal = value;
    dgvInit();
    }
    get
    {
    return IDdisplayVal;
    }
    }
    public string EncordDisplayName
    {
    set
    {
    cbEncordDisplayName.Text = value;
    }
    get
    {
    return cbEncordDisplayName.Text;
    }
    }

    public string EncordName
    {
    set
    {
    cbEncordName.Text = value;
    }
    get
    {
    return cbEncordName.Text;
    }
    }
    //*****************************************************************************************
    //コンストラクタ
    //*****************************************************************************************
    //えムナウのプログラミングのページ
    //サンプル1 簡単なユーザーコントロールの属性
    //http://mnow.wankuma.com/cs_usercontrol1.html
    public dgvEncodings()
    {
    // この呼び出しは、Windows.Forms フォーム デザイナで必要です。
    InitializeComponent();
    // TODO: InitComponent 呼び出しの後に初期化処理を追加してください。
    UserControl uc = (UserControl)this;
    System.Drawing.Size sz = new System.Drawing.Size();
    sz = uc.Size;
    sz.Height = uc.Size.Height - lblTTL.Size.Height;
    dgv.Size = sz;
    //
    }

    //*****************************************************************************************
    //デストラクタ
    //*****************************************************************************************
    //サンプル1 簡単なユーザーコントロールの属性
    //http://mnow.wankuma.com/cs_usercontrol1.html

    //*****************************************************************************************
    //プロシージャ
    //*****************************************************************************************
    public System_Text_Encoding_GetEncodings enc = new System_Text_Encoding_GetEncodings();
    public List<System_Text_Encoding_GetEncodings> encDT;
    public List<string> encName;
    public List<string> encDisplayName;
    //
    public System_Globalization_CultureInfo_GetCultures cnc = new System_Globalization_CultureInfo_GetCultures();

    private void dgvEncodings_Load(object sender, EventArgs e)
    {
    dgvInit();
    }

    private void dgvEncodings_Resize(object sender, EventArgs e)
    {
    UserControl uc = (UserControl)sender;
    System.Drawing.Size sz = new System.Drawing.Size();
    sz= uc.Size;
    sz.Height = uc.Size.Height - lblTTL.Size.Height;
    dgv.Size = sz;
    }

    private void dgvInit()
    {
    dgvUpdate(IDdisplayVal);
    //ヘッダーとすべてのセルの内容に合わせて、列の幅を自動調整する
    dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
    //ヘッダーとすべてのセルの内容に合わせて、行の高さを自動調整する
    dgv.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
    //
    if ( ( IDdisplayVal == enumID.ID_Encodings ) || ( IDdisplayVal == enumID.Encodings) )
    {
    int pos = cbEncordName.Items.IndexOf("shift_jis");
    if (pos > -1)
    {
    cbEncordName.SelectedIndex = pos;
    cbEncordDisplayName.SelectedIndex = pos;
    //
    dgv.MultiSelect = false; //マルチセレクト禁止
    dgv.CurrentCell = dgv[0, pos]; //カレントセルを移動
    }
    else
    {
    cbEncordName.Text = "shift_jis";
    cbEncordDisplayName.Text = "日本語 (シフト JIS)";
    }
    }
    else
    {
    int pos = cbEncordName.Items.IndexOf("ja-JP");
    if (pos > -1)
    {
    cbEncordName.SelectedIndex = pos;
    cbEncordDisplayName.SelectedIndex = pos;
    //
    dgv.MultiSelect = false; //マルチセレクト禁止
    dgv.CurrentCell = dgv[0, pos]; //カレントセルを移動
    }
    else
    {
    cbEncordName.Text = "ja-JP";
    cbEncordDisplayName.Text = "日本語 (日本)";
    }
    }
    }

    /// <summary>
    /// コントロールの情報を更新する。
    /// </summary>
    public void dgvUpdate(enumID flag = enumID.ID_Encodings)
    {
    switch ( flag )
    {
    case enumID.ID_Encodings:
    //
    dgv.DataSource = null; //以前の状態をクリアする。
    dgv.DataSource = enc.GetAllInfos(); //エンコード一覧取得,/ID/DisplayName/CodePage/Name
    //
    cbEncordName.DisplayMember = "Name";
    cbEncordName.DataSource = dgv.DataSource;
    cbEncordDisplayName.DisplayMember = "DisplayName";
    cbEncordDisplayName.DataSource = dgv.DataSource;
    break;
    case enumID.ID_Cultures:
    //
    dgv.DataSource = null; //以前の状態をクリアする。
    dgv.DataSource = cnc.GetAllInfos(); //エンコード一覧取得,/ID/DisplayName/CodePage/Name
    //
    cbEncordName.DisplayMember = "Name";
    cbEncordName.DataSource = dgv.DataSource;
    cbEncordDisplayName.DisplayMember = "DisplayName";
    cbEncordDisplayName.DataSource = dgv.DataSource;
    break;
    case enumID.Encodings:
    dgv.DataSource = null; //以前の状態をクリアする。
    dgv.DataSource = Encoding.GetEncodings();
    //
    cbEncordName.DisplayMember = "Name";
    cbEncordName.DataSource = dgv.DataSource;
    cbEncordDisplayName.DisplayMember = "DisplayName";
    cbEncordDisplayName.DataSource = dgv.DataSource;
    break;
    case enumID.Cultures:
    dgv.DataSource = null; //以前の状態をクリアする。
    dgv.DataSource = CultureInfo.GetCultures(CultureTypes.AllCultures);
    //
    cbEncordName.DisplayMember = "Name";
    cbEncordName.DataSource = dgv.DataSource;
    cbEncordDisplayName.DisplayMember = "DisplayName";
    cbEncordDisplayName.DataSource = dgv.DataSource;
    //
    break;
    }
    }

    public event EventHandler<EventArgs> DisplayName_SelectedIndexChanged;
    public event EventHandler<EventArgs> Name_SelectedIndexChanged;
    /// <summary>
    /// チェック状態が変更された場合に発生します
    /// ユーザーコントロールを作成する
    /// http://blog.hiros-dot.net/?p=4839
    /// </summary>
    /// <param name="e"></param>
    [Browsable(true)]
    [Description("セレクト状態が変更されるときに発生するイベントです")]
    protected virtual void OnDisplayName_SelectedIndexChanged(EventArgs e)
    {
    EventHandler<EventArgs> eventHandler = DisplayName_SelectedIndexChanged;
    if (eventHandler != null)
    {
    eventHandler(this, e);
    }
    }
    [Browsable(true)]
    [Description("セレクト状態が変更されるときに発生するイベントです")]
    protected virtual void OnName_SelectedIndexChanged(EventArgs e)
    {
    EventHandler<EventArgs> eventHandler = Name_SelectedIndexChanged;
    if (eventHandler != null)
    {
    eventHandler(this, e);
    }
    }

    bool reEntFlg = false;
    private void cbEncordDisplayName_SelectedIndexChanged(object sender, EventArgs e)
    {
    if (reEntFlg == false)
    {
    reEntFlg = true;
    //
    // 状態が変更されたのでSelectedIndexChangedイベントを発生させる
    OnName_SelectedIndexChanged(EventArgs.Empty);
    //
    reEntFlg = false;
    }
    }

    private void cbEncordName_SelectedIndexChanged(object sender, EventArgs e)
    {
    if (reEntFlg == false)
    {
    reEntFlg = true;
    //
    // 状態が変更されたのでSelectedIndexChangedイベントを発生させる
    OnDisplayName_SelectedIndexChanged(EventArgs.Empty);
    //
    reEntFlg = false;
    }
    }


    }
    }
    ```

    キャンセル

  • 2015/04/28 11:17

    <<List<Of T>例>>
    ```lang-<C#>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    //
    using System.Threading.Tasks; //スレッド用
    using System.Diagnostics; //出力ウィンド:デバッグウィンド
    using System.Text.RegularExpressions; //正規表現使用
    using System.Globalization; //グローバライゼーション

    namespace SupportClass
    {
    public class System_SupportClass
    {
    public string Ver = "1.000";
    public string VerDate = "2015-JAN-20";
    public string Copyright = "";
    }


    /// <summary>
    /// サポートしているすべてのエンコーディングを取得する
    /// http://dobon.net/vb/dotnet/string/getencodings.html
    /// 結果は、OS、.NET Framework の種類による
    /// </summary>
    public class System_Text_Encoding_GetEncodings
    {
    //enum
    public enum enumNameA
    {
    ID ,
    CodePage,
    Name ,
    DisplayName,
    }
    public enum enumNameB : int
    {
    ID = 100,
    CodePage = 101,
    Name = 102,
    DisplayName = 103,
    }

    //ヘッダー
    public int ID { get; set; } //0
    //データ
    public int CodePage { get; set; } //1
    public String Name { get; set; } //2
    public String DisplayName { get; set; } //3

    public string GetTypeName()
    {
    return this.GetType().Name;
    }
    //
    public List<System_Text_Encoding_GetEncodings> GetAllInfos()
    {
    List<System_Text_Encoding_GetEncodings > result = new List<System_Text_Encoding_GetEncodings>();
    System_Text_Encoding_GetEncodings data0 = new System_Text_Encoding_GetEncodings();
    //
    rData(result);
    // 出来上がったUserオブジェクトのリストを戻り値として返す
    return result;
    }

    public List<string> GetAllInfos(enumNameA eName )
    {
    List<string> result = new List<string>();
    //string data0;
    //
    rData(eName,result);
    // 出来上がったUserオブジェクトのリストを戻り値として返す
    return result;
    }

    public int UpdateInfo()
    {
    //dummy
    return 0;
    }

    public int InsertInfo()
    {
    //dummy
    return 0;
    }

    public int DeleteInfo()
    {
    //dummy
    return 0;
    }
    /// <summary>
    /// データ初期値
    /// </summary>
    private System_Text_Encoding_GetEncodings bData(System_Text_Encoding_GetEncodings data0)
    {
    data0.ID = 0;
    //
    data0.CodePage = 0;
    data0.Name = "-----";
    data0.DisplayName = "-----";
    //
    return data0;
    }
    /// <summary>
    /// データ読込
    /// </summary>
    private void rData( List<System_Text_Encoding_GetEncodings> result )
    {
    //サポートしているすべてのエンコーディングを取得する
    //http://dobon.net/vb/dotnet/string/getencodings.html
    System.Text.EncodingInfo[] eis = System.Text.Encoding.GetEncodings();
    //エンコーディングの情報をファイルに書き込む
    int jj = 0;
    foreach (System.Text.EncodingInfo ei in eis)
    {
    System_Text_Encoding_GetEncodings data1 = new System_Text_Encoding_GetEncodings();
    jj++;
    data1.ID = jj;
    data1.CodePage = ei.CodePage;
    data1.Name = ei.Name;
    data1.DisplayName = ei.DisplayName;
    //
    result.Add(data1);
    }
    }
    private void rData(enumNameA eName, List<string> result)
    {
    //サポートしているすべてのエンコーディングを取得する
    //http://dobon.net/vb/dotnet/string/getencodings.html
    System.Text.EncodingInfo[] eis = System.Text.Encoding.GetEncodings();
    //エンコーディングの情報をファイルに書き込む
    int jj = 0;
    foreach (System.Text.EncodingInfo ei in eis)
    {
    List<string> data1 = new List<string>();
    jj++;
    switch (eName)
    {
    case enumNameA.ID:
    result.Add(ID.ToString());
    break;
    case enumNameA.CodePage:
    result.Add(ei.CodePage.ToString());
    break;
    case enumNameA.Name:
    result.Add(ei.Name);
    break;
    case enumNameA.DisplayName:
    result.Add(ei.DisplayName);
    break;
    default:
    //
    break;
    }
    }
    }

    /// <summary>
    /// データ書出
    /// </summary>
    private void sData( )
    {
    //dummy
    }
    }

    キャンセル

  • 2015/04/28 11:19


    /// <summary>
    /// CultureInfo クラス
    /// https://msdn.microsoft.com/ja-jp/library/system.globalization.cultureinfo(v=vs.110).aspx
    /// 結果は、OS、.NET Framework の種類による
    /// </summary>
    public class System_Globalization_CultureInfo_GetCultures
    {
    //enum
    public enum enumName
    {
    ID,
    Parent,
    LCID,
    KeyboardLayoutId,
    Name,
    IetfLanguageTag,
    DisplayName,
    NativeName,
    EnglishName,
    TwoLetterISOLanguageName,
    ThreeLetterISOLanguageName,
    ThreeLetterWindowsLanguageName,
    CompareInfo,
    TextInfo,
    IsNeutralCulture,
    CultureTypes,
    NumberFormat,
    DateTimeFormat,
    Calendar,
    UseUserOverride,
    IsReadOnly,
    }

    //ヘッダー
    public int ID { get; set; } //0
    //データ
    public string Parent { get; set; } //1
    public int LCID { get; set; } //2
    public int KeyboardLayoutId { get; set; } //3
    public string Name { get; set; } //4
    public string IetfLanguageTag { get; set; } //5
    public string DisplayName { get; set; } //6
    public string NativeName { get; set; } //7
    public string EnglishName { get; set; } //8
    public string TwoLetterISOLanguageName { get; set; } //9
    public string ThreeLetterISOLanguageName { get; set; } //10
    public string ThreeLetterWindowsLanguageName { get; set; } //11
    public string CompareInfo { get; set; } //12
    public string TextInfo { get; set; } //13
    public bool IsNeutralCulture { get; set; } //14
    public string CultureTypes { get; set; } //15
    public string NumberFormat { get; set; } //16
    public string DateTimeFormat { get; set; } //17
    public string Calendar { get; set; } //18
    public bool UseUserOverride { get; set; } //19
    public bool IsReadOnly { get; set; } //20

    public static CultureInfo CurrentCulture { get; set; }
    public static CultureInfo CurrentUICulture { get; set; }
    public static CultureInfo DefaultThreadCurrentCulture { get; set; }
    public static CultureInfo DefaultThreadCurrentUICulture { get; set; }
    public static CultureInfo InstalledUICulture { get; set; }
    public static CultureInfo InvariantCulture { get; set; }
    public virtual Calendar[] OptionalCalendars { get; set; }

    public string GetTypeName()
    {
    return this.GetType().Name;
    }
    //
    public List<System_Globalization_CultureInfo_GetCultures> GetAllInfos()
    {
    List<System_Globalization_CultureInfo_GetCultures> result = new List<System_Globalization_CultureInfo_GetCultures>();
    System_Globalization_CultureInfo_GetCultures data0 = new System_Globalization_CultureInfo_GetCultures();
    //
    rData(result);
    // 出来上がったUserオブジェクトのリストを戻り値として返す
    return result;
    }

    public List<string> GetAllInfos(enumName eName)
    {
    List<string> result = new List<string>();
    //string data0;
    //
    rData(eName, result);
    // 出来上がったUserオブジェクトのリストを戻り値として返す
    return result;
    }

    public int UpdateInfo()
    {
    //dummy
    return 0;
    }

    public int InsertInfo()
    {
    //dummy
    return 0;
    }

    public int DeleteInfo()
    {
    //dummy
    return 0;
    }
    /// <summary>
    /// データ初期値
    /// </summary>
    private System_Globalization_CultureInfo_GetCultures bData(System_Globalization_CultureInfo_GetCultures data0)
    {
    data0.ID = 0; //0
    //
    data0.Parent=null; //1
    data0.LCID = 0; //2
    data0.KeyboardLayoutId = 0; //3
    data0.Name = null; //4
    data0.IetfLanguageTag = null; //5
    data0.DisplayName = null; //6
    data0.NativeName = null; //7
    data0.EnglishName = null; //8
    data0.TwoLetterISOLanguageName = null; //9
    data0.ThreeLetterISOLanguageName = null; //10
    data0.ThreeLetterWindowsLanguageName = null; //11
    data0.CompareInfo = null; //12
    data0.TextInfo = null; //13
    data0.IsNeutralCulture = false; //14
    data0.CultureTypes = null; //15
    data0.NumberFormat = null; //16
    data0.DateTimeFormat = null; //17
    data0.Calendar = null; //18
    data0.UseUserOverride = false; //19
    data0.IsReadOnly = false; //20
    //
    return data0;
    }
    /// <summary>
    /// データ読込
    /// </summary>
    private void rData(List<System_Globalization_CultureInfo_GetCultures> result)
    {
    //サポートしているすべてのエンコーディングを取得する
    //http://dobon.net/vb/dotnet/string/getencodings.html
    CultureInfo[] cis = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
    //エンコーディングの情報をファイルに書き込む
    int jj = 0;
    foreach (CultureInfo ci in cis)
    {
    System_Globalization_CultureInfo_GetCultures data1 = new System_Globalization_CultureInfo_GetCultures();
    jj++;
    data1.ID = jj; //0
    //
    data1.Parent = ci.Parent.ToString(); //1
    data1.LCID = ci.LCID; //2
    data1.KeyboardLayoutId = ci.KeyboardLayoutId; //3
    data1.Name = ci.Name; //4
    data1.IetfLanguageTag = ci.IetfLanguageTag; //5
    data1.DisplayName = ci.DisplayName; //6
    data1.NativeName = ci.NativeName; //7
    data1.EnglishName = ci.EnglishName; //8
    data1.TwoLetterISOLanguageName = ci.TwoLetterISOLanguageName; //9
    data1.ThreeLetterISOLanguageName = ci.ThreeLetterISOLanguageName; //10
    data1.ThreeLetterWindowsLanguageName = ci.ThreeLetterWindowsLanguageName; //11
    data1.CompareInfo = ci.CompareInfo.ToString(); //12
    data1.TextInfo = ci.TextInfo.ToString(); //13
    data1.IsNeutralCulture = ci.IsNeutralCulture; //14
    data1.CultureTypes = ci.CultureTypes.ToString(); //15
    data1.NumberFormat = ci.NumberFormat.ToString(); //16
    data1.DateTimeFormat = ci.DateTimeFormat.ToString(); //17
    data1.Calendar = ci.Calendar.ToString(); //18
    data1.UseUserOverride = ci.UseUserOverride; //19
    data1.IsReadOnly = ci.IsReadOnly; //20
    //
    result.Add(data1);
    }
    }
    private void rData(enumName eName, List<string> result)
    {
    //サポートしているすべてのエンコーディングを取得する
    //http://dobon.net/vb/dotnet/string/getencodings.html
    CultureInfo[] cis = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures);
    //エンコーディングの情報をファイルに書き込む
    int jj = 0;
    foreach (CultureInfo ci in cis)
    {
    List<string> data1 = new List<string>();
    jj++;
    switch (eName)
    {
    case enumName.ID:
    result.Add(ID.ToString());
    break;
    case enumName.Parent:
    result.Add(ci.Parent.ToString());
    break;
    case enumName.LCID:
    result.Add(ci.LCID.ToString());
    break;
    case enumName.KeyboardLayoutId :
    result.Add(ci.KeyboardLayoutId.ToString() );
    break;
    case enumName.Name :
    result.Add(ci.Name );
    break;
    case enumName.IetfLanguageTag :
    result.Add(ci.IetfLanguageTag );
    break;
    case enumName.DisplayName :
    result.Add(ci.DisplayName );
    break;
    case enumName.NativeName :
    result.Add(ci.NativeName );
    break;
    case enumName.EnglishName :
    result.Add(ci.EnglishName );
    break;
    case enumName.TwoLetterISOLanguageName :
    result.Add(ci.TwoLetterISOLanguageName );
    break;
    case enumName.ThreeLetterISOLanguageName :
    result.Add(ci.ThreeLetterISOLanguageName );
    break;
    case enumName.ThreeLetterWindowsLanguageName :
    result.Add(ci.ThreeLetterWindowsLanguageName );
    break;
    case enumName.CompareInfo :
    result.Add(ci.CompareInfo.ToString() );
    break;
    case enumName.TextInfo :
    result.Add(ci. TextInfo.ToString() );
    break;
    case enumName.IsNeutralCulture :
    result.Add(ci.IsNeutralCulture.ToString() );
    break;
    case enumName.CultureTypes :
    result.Add(ci.CultureTypes.ToString());
    break;
    case enumName.NumberFormat :
    result.Add(ci.NumberFormat.ToString());
    break;
    case enumName.DateTimeFormat :
    result.Add(ci.DateTimeFormat.ToString());
    break;
    case enumName.Calendar:
    result.Add(ci.Calendar.ToString());
    break;
    case enumName.UseUserOverride :
    result.Add(ci.UseUserOverride.ToString());
    break;
    case enumName.IsReadOnly :
    result.Add(ci.IsReadOnly.ToString());
    break;

    default:
    //
    break;
    }
    }
    }

    /// <summary>
    /// データ書出
    /// </summary>
    private void sData()
    {
    //dummy
    }
    }
    }
    ```

    キャンセル

0

こんにちは。

Moduleで実行したいのであれば処理対象となるUserControlのインスタンスを渡す必要があります。
これがhtsignさんが仰っていることです。

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Call F_test(Me.UserControl11)
    End Sub
End Class

Module Module1
    Public Sub F_test(uc As UserControl1)
        Dim xCount = uc.ListView1.Items.Count
        MsgBox(xCount)
    End Sub
End Module

ただ、この例では特定のインスタンスに依存した処理であるため、
Moduleに切り出すメリットは無いでしょう。
オブジェクト指向的に考えるとすると、daiveさんが仰っているようにUserControl1クラスが実装する機能とするべきだと思います。

Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.UserControl11.F_test()
    End Sub
End Class

Public Class UserControl1

    Public Sub F_test()
        Dim xCount = Me.ListView1.Items.Count
        MsgBox(xCount)
    End Sub
End Class

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/28 09:24

    Tak1wa 様
    いつもお世話になります。前回もお世話になりました。
    ご親切な説明ありがとうございます。初心者でプロの方の話が理解ができず、申し訳ございません。色々上記のコードで3時間ぐらいやってみました。googleでも探しながら勉強中ですが、2案の両方ともうまくできませんでした。フォーム側の [me]の次に[.]を打つとそこからエラー文言だと表示されます。すみませんが、助けてくださると助かります。

    キャンセル

  • 2015/04/28 10:17

    Me.と打つとなんというエラーが表示されますか?

    また、以下のコードも提示して頂いても宜しいでしょうか。
    >フォームにボタンがありまして、そのボタンをクリックするとusercontrolを表示します。
    >ここまでは成功しております。

    キャンセル

  • 2015/04/28 21:11

    手数かけてしまいすみません。

    フォームには1つのusercontrol呼び出しボタンがあります。

    1つ目
    Dim tempObject As New UserControl1
    Panel1.Controls.Clear()
    tempObject.Dock = DockStyle.Fill
    tempObject.Visible = False
    Panel1.Controls.Add(tempObject)

    2つめ
    Dim tempObject As New UserControl2
    Panel1.Controls.Clear()
    tempObject.Dock = DockStyle.Fill
    Panel1.Controls.Add(tempObject)

    です。

    meの後に 「.」を打つと普段はそれに関する補助語リストが出てきますが
    usercontrol1という文字がリストには表示されてないです。ということでエラーだと
    思っていました。それを無視して教えてくれましたCODEで実行すると「インスタンス~」というエラーが出ます。

    キャンセル

  • 2015/04/28 21:12

    あ、すみません。フォームには1つのusercontrol呼び出しボタンがあります。
    ではなく
    「フォームには2つのusercontrol呼び出しボタンがあります。」です。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • VB.NET

    938questions

    Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

  • VB

    309questions

    VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

  • Visual Basic .NET

    101questions

    Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。