c# 在另一个 class 的部分调用中调用方法
c# Calling method in partial call from another class
我正在制作 c# 应用程序,我需要从另一个 class.
部分访问方法 class
更具体地说,我想从 class 添加项目到列表视图,这与部分 class 不同,但在相同的命名空间中。
我这样试过:
public partial class Aa : Form
{
public static void UpdateListView(string[] array)
{
if (ProcessNetUsageList.InvokeRequired)
{
ProcessNetUsageList.Invoke(new Action<string[]>(UpdateListView), array);
}
else
{
ListViewItem item = new ListViewItem(array[0]);
for (int i = 1; i < 4; i++)
item.SubItems.Add(array[i]);
ProcessNetUsageList.Items.Add(item);
}
}
}
然后从另一个 class 访问它,例如:
class Test
{
test()
{
ProgramName.Aa.UpdateListView(someArray);
}
}
但是它给出了一个错误,因为静态方法只能访问静态变量,而我的列表视图不是静态的(我在 vs 设计器中创建了那个列表视图)。
如果我从部分 class 中的方法中删除 static 关键字,那么我将无法访问 it.I 尝试创建部分 class 的实例,但没有 success.Any 想法是受欢迎的
注意:我在我的 UpdateListView 方法中使用了 Invoke,因为稍后它将 运行 在新线程
像以前一样从 UpdateListView 中删除静态关键字。在test()中,需要在访问UpdateListView之前实例化Aa。
Aa temp = new Aa()
然后您可以使用
访问该方法
temp.UpdateListView(someArray);
面向对象语言的本质是对象不具有修改其他对象的通用访问权限。这是一件好事。
您提供的代码相对较少,因此很难在此处提供完美的答案,但有一些范例可以解决此问题。
一种是将实例传递给您的测试class,像这样:
class Test
{
test(ProgramName.Aa form)
{
form.UpdateListView(someArray);
}
}
或者,如果 class test
实际上包含 ListView
,您可以将其传递给 Aa
.
中的静态方法
class Test
{
ListView someListView;
test()
{
ProgramName.Aa.UpdateListView(someListView, someArray);
}
}
最终,您应该考虑这些对象之间的逻辑关系,以确定这些对象应该如何通信。
我正在制作 c# 应用程序,我需要从另一个 class.
部分访问方法 class更具体地说,我想从 class 添加项目到列表视图,这与部分 class 不同,但在相同的命名空间中。
我这样试过:
public partial class Aa : Form
{
public static void UpdateListView(string[] array)
{
if (ProcessNetUsageList.InvokeRequired)
{
ProcessNetUsageList.Invoke(new Action<string[]>(UpdateListView), array);
}
else
{
ListViewItem item = new ListViewItem(array[0]);
for (int i = 1; i < 4; i++)
item.SubItems.Add(array[i]);
ProcessNetUsageList.Items.Add(item);
}
}
}
然后从另一个 class 访问它,例如:
class Test
{
test()
{
ProgramName.Aa.UpdateListView(someArray);
}
}
但是它给出了一个错误,因为静态方法只能访问静态变量,而我的列表视图不是静态的(我在 vs 设计器中创建了那个列表视图)。
如果我从部分 class 中的方法中删除 static 关键字,那么我将无法访问 it.I 尝试创建部分 class 的实例,但没有 success.Any 想法是受欢迎的
注意:我在我的 UpdateListView 方法中使用了 Invoke,因为稍后它将 运行 在新线程
像以前一样从 UpdateListView 中删除静态关键字。在test()中,需要在访问UpdateListView之前实例化Aa。
Aa temp = new Aa()
然后您可以使用
访问该方法temp.UpdateListView(someArray);
面向对象语言的本质是对象不具有修改其他对象的通用访问权限。这是一件好事。
您提供的代码相对较少,因此很难在此处提供完美的答案,但有一些范例可以解决此问题。
一种是将实例传递给您的测试class,像这样:
class Test
{
test(ProgramName.Aa form)
{
form.UpdateListView(someArray);
}
}
或者,如果 class test
实际上包含 ListView
,您可以将其传递给 Aa
.
class Test
{
ListView someListView;
test()
{
ProgramName.Aa.UpdateListView(someListView, someArray);
}
}
最终,您应该考虑这些对象之间的逻辑关系,以确定这些对象应该如何通信。