Vb.net 无法引用文本框,因为我没有';我还没有创造它
我正在使用VB制作一个文件编辑系统,允许用户在多个选项卡上编辑多个文件,如Notpad++ 不过我碰到了一个小小的障碍。由于选项卡不包含文本,我在创建时为每个选项卡添加了一个文本框 对于加载文件,我想检查当前选项卡的文本框是否为空,这样我就不会将加载的文件添加为新选项卡,这只会造成混乱(比如word打开文件时,它会检查当前文档是否为未保存的文件,加载前没有文本) 问题是,我如何用我还没有添加的标签检查这个问题?(Ie将在程序运行时添加,而不是在设计模式下)Vb.net 无法引用文本框,因为我没有';我还没有创造它,vb.net,Vb.net,我正在使用VB制作一个文件编辑系统,允许用户在多个选项卡上编辑多个文件,如Notpad++ 不过我碰到了一个小小的障碍。由于选项卡不包含文本,我在创建时为每个选项卡添加了一个文本框 对于加载文件,我想检查当前选项卡的文本框是否为空,这样我就不会将加载的文件添加为新选项卡,这只会造成混乱(比如word打开文件时,它会检查当前文档是否为未保存的文件,加载前没有文本) 问题是,我如何用我还没有添加的标签检查这个问题?(Ie将在程序运行时添加,而不是在设计模式下) 如果有人知道答案,我将不胜感激。很久以
如果有人知道答案,我将不胜感激。很久以前,我还必须用C#制作一个记事本++克隆,它需要支持在选项卡中编辑多个文件。我记得我的表单中有一个
列表OpenFiles
成员,其中包含打开文件的文件名。每次打开新文件时,我都会这样做:
- 将新项目添加到
OpenFiles
- 创建一个带有文本框的新选项卡,并将其添加到TabControl
OpenFiles
列表与TabControl中的选项卡同步。例如,OpenFiles
中的项目3是TabControl中第四个选项卡的文件名
当然,当我打开一个新文件时,我需要检查该文件以前是否打开过。如果以前打开过,我就切换到它的标签;如果没有,我会打开一个新选项卡
拥有OpenFiles
成员,这很容易。打开文件的完整算法如下:
- 通过搜索
列表,检查文件是否已打开OpenFiles
- 如果文件已经打开(如果它存在于
中),并且它在OpenFiles
中的位置是OpenFiles
(例如),则激活idx
选项卡idx
- 如果文件不存在于
OpenFiles
- 将其添加到末尾的
OpenFiles
- 将带有文本框的新选项卡添加到TabControl的末尾
- 将其添加到末尾的
idx
th选项卡),我执行了以下操作:
- 检查文件是否已保存,如果未保存,则提示用户是否要保存文件(是/否/取消消息框)。
- 如果他选择“是”,则保存并继续
- 如果他选择“否”,则不要保存它并继续
- 如果他选择取消,则中止操作(返回)
- 从选项卡控件中删除
th选项卡idx
- 删除
列表中的OpenFiles
th项idx
我认为您可以在应用程序中应用相同的逻辑。很久以前,我还必须用C#制作一个记事本++克隆,它需要支持在选项卡中编辑多个文件。我记得我的表单中有一个
列表OpenFiles
成员,其中包含打开文件的文件名。每次打开新文件时,我都会这样做:
- 将新项目添加到
OpenFiles
- 创建一个带有文本框的新选项卡,并将其添加到TabControl
OpenFiles
列表与TabControl中的选项卡同步。例如,OpenFiles
中的项目3是TabControl中第四个选项卡的文件名
当然,当我打开一个新文件时,我需要检查该文件以前是否打开过。如果以前打开过,我就切换到它的标签;如果没有,我会打开一个新选项卡
拥有OpenFiles
成员,这很容易。打开文件的完整算法如下:
- 通过搜索
列表,检查文件是否已打开OpenFiles
- 如果文件已经打开(如果它存在于
中),并且它在OpenFiles
中的位置是OpenFiles
(例如),则激活idx
选项卡idx
- 如果文件不存在于
OpenFiles
- 将其添加到末尾的
OpenFiles
- 将带有文本框的新选项卡添加到TabControl的末尾
- 将其添加到末尾的
idx
th选项卡),我执行了以下操作:
- 检查文件是否已保存,如果未保存,则提示用户是否要保存文件(是/否/取消消息框)。
- 如果他选择“是”,则保存并继续
- 如果他选择“否”,则不要保存它并继续
- 如果他选择取消,则中止操作(返回)
- 从选项卡控件中删除
th选项卡idx
- 删除
列表中的OpenFiles
th项idx
我认为您可以在应用程序中应用相同的逻辑。我不知道VB.NET,但我用C语言编写了这段代码,它检查
选项卡页
是否包含一个空的文本框
。我认为如果你懂VB.NET语言,那么把它翻译成VB.NET是很容易的
下面是检查选项卡页是否包含空文本框的函数。该函数接收TabPage作为其参数,并返回true
或false
private bool ContainsEmptyTextBox(TabPage tp)
{
bool foundTextBox = false;
bool textBoxIsEmpty = false;
foreach (Control c in tp.Controls)
{
if (c is TextBox)
{
foundTextBox = true;
TextBox tb = c as TextBox;
if (String.IsNullOrEmpty(tb.Text))
{
textBoxIsEmpty = true;
}
break;
}
}
if (foundTextBox == true && textBoxIsEmpty == true)
return true;
else
return false;
}
下面是如何使用该函数迭代TabControl
中的所有选项卡,并查看哪个选项卡包含空文本框:
private void button1_Click(object sender, EventArgs e)
{
foreach (TabPage tp in tabControl1.TabPages)
{
if (ContainsEmptyTextBox(tp))
{
// This tabpage contains an empty textbox
MessageBox.Show(tabControl1.TabPages.IndexOf(tp) + " contains an empty textbox");
}
}
}
编辑:我曾经自动将C代码转换成VB.NET
Private Function ContainsEmptyTextBox(tp As TabPage) As Boolean
Dim foundTextBox As Boolean = False
Dim textBoxIsEmpty As Boolean = False
For Each c As Control In tp.Controls
If TypeOf c Is TextBox Then
foundTextBox = True
Dim tb As TextBox = TryCast(c, TextBox)
If [String].IsNullOrEmpty(tb.Text) Then
textBoxIsEmpty = True
End If
Exit For
End If
Next
If foundTextBox = True AndAlso textBoxIsEmpty = True Then
Return True
Else
Return False
End If
End Function
Private Sub button1_Click(sender As Object, e As EventArgs)
For Each tp As TabPage In tabControl1.TabPages
If ContainsEmptyTextBox(tp) Then
' This tabpage contains an empty textbox
MessageBox.Show(tabControl1.TabPages.IndexOf(tp) & " contains an empty textbox")
End If
Next
End Sub
我不知道VB.NET,但我用C语言编写了这段代码,它检查
TabPage
是否包含一个TextBox
为空。我认为如果你懂VB.NET语言,那么把它翻译成VB.NET是很容易的
下面是检查选项卡页是否包含空文本框的函数。该函数接收TabPage作为其参数,并返回true
或false
private bool ContainsEmptyTextBox(TabPage tp)
{
bool foundTextBox = false;
bool textBoxIsEmpty = false;
foreach (Control c in tp.Controls)
{
if (c is TextBox)
{
foundTextBox = true;
TextBox tb = c as TextBox;
if (String.IsNullOrEmpty(tb.Text))
{
textBoxIsEmpty = true;
}
break;
}
}
if (foundTextBox == true && textBoxIsEmpty == true)
return true;
else
return false;
}
下面是如何使用该函数迭代TabControl
中的所有选项卡,并查看