我有一个名为 OPIMG(2000,2000,10) 的多维数组,它包含我在主窗体上创建的图像数据集(16 位灰度图像作为用户控件中使用的数据)。我需要能够从活动 X 中访问这些数据,但不能将数组放入控件中。
我尝试在控件中创建一个新数组并逐个值地复制数据,但这花费了太多时间,所以我需要找到一种能够从用户控件直接访问公共数组的方法。
我同意盛子昂的观点,那就是它有很多记忆要传递,因为它可以用来
2000 x 2000 x 10 = 40,000,000
Approximately 40Mb
然而,为了回答您的问题,我已经粘贴了页面和用户控件的代码。
PAGE CODE
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Src="~/MyUserControl.ascx" TagName="MyUserCtrlItem" TagPrefix="UC1" %>
<script runat="server">
Private _MyArray(,,) As Long
'
Protected Sub Page_Load(sender As Object, e As System.EventArgs)
'
Dim X As Integer
Dim Y As Integer
Dim Z As Integer
Dim Number As Long
'
' Populate array with test data
ReDim _MyArray(2000, 2000, 10)
For Z = 0 To 9
For Y = 0 To 199
For X = 0 To 199
Number = Number + 1
_MyArray(X, Y, Z) = Number
Next
Next
Next
MyUserCtrlItem1.MyCtrlArray = _MyArray
'
End Sub
'
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<UC1:MyUserCtrlItem ID="MyUserCtrlItem1" runat="server" />
</form>
</body>
</html>
以及用户控件的代码
USER CONTROL
<%@ Control Language="VB" ClassName="MyUserControl" %>
<script runat="server">
Private _MyCtrlArray(,,) As Long
Property MyCtrlArray As Array
Get
Return _MyCtrlArray
End Get
Set(value As Array)
_MyCtrlArray = value
End Set
End Property
Protected Sub Button1_Click(sender As Object, e As System.EventArgs)
If TextBox1.Text <> "" Then
If TextBox2.Text <> "" Then
If TextBox3.Text <> "" Then
Label1.Text = _MyCtrlArray(CInt(TextBox1.Text), CInt(TextBox2.Text), CInt(TextBox3.Text))
Else
Label1.Text = "Z value missing/invalid!"
End If
Else
Label1.Text = "Y value missing/invalid!"
End If
Else
Label1.Text = "X value missing/invalid!"
End If
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
End Sub
</script>
<!-- HTML -->
X Value: <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
Y Value: <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
Z Value: <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br /><br />
Data: <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br /><br />
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
在示例代码中,您输入 XY 和 Z 的值,它将返回 NUMBER 元素中保存的 VALUE(我刚刚在页面加载事件中递增)