我正在尝试获取表单的ID,以便可以将表单id
保存到数据库中,以便创建动态记录:
例如,我正在尝试创建某种形式的签名人(例如,批准人:,请求人:),但结果为零。
这里是我的VB.NET代码
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim form_id As Integer = Me.AccessibleDescription
MsgBox(form_id)
End Sub
这里是我的C#代码:
private void Form1_Load(object sender, EventArgs e)
{
int form_id = this.AccessibleDescription;
Interaction.MsgBox(form_id);
}
答案 0 :(得分:2)
您有两种处理方案的方法。通过两种方式,您需要在“设计”视图中设置表单的相应属性,以便将其永久保存。
只需使用表单的Name属性,但只需确保为应用程序中的每个表单将此属性设置为唯一的字符串即可。如果你想只存储整数每个格式标识符然后解析在名称结尾的整数名称属性;例如,如果Me.Name = "Form1"
,则解析Form1以获得1
作为表单标识符。
''put this line in Form Load event
Dim formIdentifier as string = Me.Name
''OR use the integer part as identifier in form name assuming
''you name each form starting with Form
''and then an integer
Dim formIdentifier as string = Me.Name.Substring(4)
第二个选项是设置表单的Tag
属性的值并将其用作标识符。此属性使开发人员可以将任何自定义字符串值附加到表单。例如,在屏幕截图下面我已分配formFinance
如我可以作为表格的标识使用的代码。确保Tag属性有一个表单的唯一值。
''put this line in Form Load event
Dim formIdentifier as string = Me.Tag
答案 1 :(得分:0)
好,所以这是代码项目的解决方案: https://www.codeproject.com/Questions/853501/How-I-Can-Get-List-Of-All-Forms-In-My-Project-Usin 您更改您的需求。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim myAssembly As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
Dim types As Type() = myAssembly.GetTypes()
For Each t As Type In types
If UCase(t.BaseType.ToString) = "SYSTEM.WINDOWS.FORMS.FORM" Then
'MessageBox.Show(t.Name)
ListBox1.Items.Add(t.Name)
End If
Next
End Sub