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

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

新規登録して質問してみよう
ただいま回答率
85.48%
VB

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

Visual Basic .NET

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

VB.NET

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

Q&A

解決済

4回答

4786閲覧

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

teratail_user1

総合スコア10

VB

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

Visual Basic .NET

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

VB.NET

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

0グッド

0クリップ

投稿2015/04/26 17:39

編集2015/04/26 23:34

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名様からコメントを頂きましたが、まだ解決できてないのですみませんが、
よろしくお願い致します。

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

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

簡単なのは退避しておくとか

lang

1Public Class Form1 2 Private current As UserControl '退避しておく 3 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 4 Dim tempObject As New UserControl1 5 Panel1.Controls.Clear() 6 tempObject.Dock = DockStyle.Fill 7 tempObject.Visible = False 8 Panel1.Controls.Add(tempObject) 9 '退避しておく 10 current = tempObject 11 End Sub 12 13 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 14 Dim tempObject As New UserControl2 15 Panel1.Controls.Clear() 16 tempObject.Dock = DockStyle.Fill 17 Panel1.Controls.Add(tempObject) 18 '退避しておく 19 current = tempObject 20 End Sub 21 22 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 23 Call F_Test(Me.current) '退避していたインスタンスを渡す 24 End Sub 25End Class 26 27Module Module1 28 Public Sub F_Test(uc As UserControl) 'インスタンスを呼び出し元から受け取る 29 If uc Is Nothing Then Return 30 uc.Visible = True 31 uc.BackColor = Color.Red 32 End Sub 33End Module

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

lang

1Public Class Form1 2 3 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 4 Dim tempObject As New UserControl1 5 Panel1.Controls.Clear() 6 tempObject.Dock = DockStyle.Fill 7 tempObject.Visible = False 8 Panel1.Controls.Add(tempObject) 9 End Sub 10 11 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 12 Dim tempObject As New UserControl2 13 Panel1.Controls.Clear() 14 tempObject.Dock = DockStyle.Fill 15 Panel1.Controls.Add(tempObject) 16 End Sub 17 18 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 19 '何らかの方法でパネルから取得する。 20 '名前でもいいし順番でもいいが、要件によるしエラーチェックとかも必要 21 Call F_Test(CType(Panel1.Controls(0), UserControl)) 22 End Sub 23End Class

投稿2015/04/28 12:53

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratail_user1

2015/04/28 16: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)」にしたら希望の動きを取る事ができました。 本当に感謝します。
guest

0

こんにちは。

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

lang

1Public Class Form1 2 3 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 4 Call F_test(Me.UserControl11) 5 End Sub 6End Class 7 8Module Module1 9 Public Sub F_test(uc As UserControl1) 10 Dim xCount = uc.ListView1.Items.Count 11 MsgBox(xCount) 12 End Sub 13End Module

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

lang

1Public Class Form1 2 3 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 4 Me.UserControl11.F_test() 5 End Sub 6End Class 7 8Public Class UserControl1 9 10 Public Sub F_test() 11 Dim xCount = Me.ListView1.Items.Count 12 MsgBox(xCount) 13 End Sub 14End Class

投稿2015/04/27 01:44

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratail_user1

2015/04/28 00:24

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

2015/04/28 01:17

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

2015/04/28 12: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で実行すると「インスタンス~」というエラーが出ます。
teratail_user1

2015/04/28 12:12

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

0

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

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

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

投稿2015/04/26 22:31

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratail_user1

2015/04/26 23:31

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

2015/04/28 01:58

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

2015/04/28 02: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; } } } } ```
daive

2015/04/28 02: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 } }
daive

2015/04/28 02: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 } } } ```
guest

0

あなたの書かれている

lang

1Public uc As New UserControl1 2Public Sub F_test() 3 Dim xCount = uc.ListView1.Items.Count 4 MsgBox(xCount) 5End Sub

は、新たにUserControl1のインスタンスをもう一つ作り、そのプロパティを参照しているだけの別物です。

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

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

投稿2015/04/26 19:09

編集2015/04/26 19:11
htsign

総合スコア870

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratail_user1

2015/04/26 23:32

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問