我有类似的MainWindows.cs:
namespace LiniaProdukcyjna
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}
我有CSilnik课程:
namespace LiniaProdukcyjna
{
class CSilnik
{
ICollection<CLinia> linie;
public void permut(int k, int n, int[] nums)
{
int i, j, tmp;
/* when k > n we are done and should print */
if (k <= n)
{
for (i = k; i <= n; i++)
{
tmp = nums[i];
for (j = i; j > k; j--)
{
nums[j] = nums[j - 1];
}
nums[k] = tmp;
/* recurse on k+1 to n */
permut(k + 1, n, nums);
for (j = k; j < i; j++)
{
nums[j] = nums[j + 1];
}
nums[i] = tmp;
}
}
else
{
linie.Add(new CLinia(nums));
// here i want to do something with ListView in MainWindow
}
}
}
}
和CLinia课程:
namespace LiniaProdukcyjna
{
class CLinia
{
int koszt;
int[] kolejnosc;
public CLinia(int[] inKolejnosc)
{
kolejnosc = inKolejnosc;
}
}
}
我在MainWindow中有ListView控件。 我想在MainWindow中修改ListView“lista”,但我无法访问它们。 我需要做什么来访问控件,如:lista.Items.Add?
答案 0 :(得分:3)
您可以做的一件事就是创建一个SomeClass
的构造函数,在其中您要访问listview
,并在创建时listview
中传递constructor
的引用SomeClass
的实例。这样,您就可以在任何listview
class
例如
MainWindow.xaml.cs文件中的
public MainWindow()
{
InitializeComponent();
SomeClass someClass = new SomeClass(listView);
}
在您要访问listview的其他课程中
public SomeClass
{
ListView _ListViewRef;
public SomeClass(ListView listView)
{
_LisViewRef = listView;
}
SomeMethod()
{
//here you can play with listview
}
}
答案 1 :(得分:3)
在类之间传递UI控件实际上不是一个好主意。
您只能在控制窗口的类中编辑控件(例如listviews,textboxes等)。
但是,您可以创建另一个仅拆分主窗口类的部分类。
如果您将某些内容传递给其他课程,则可以通过以下方式传递:
Public SomeClass(string text)
{
}
//Create an object of 'SomeClass'
SomeClass someClass = new SomeClass(textBox.text);
或者您可以通过方法传递用户控件属性。
希望这有帮助,
答案 2 :(得分:1)
在MainWindow.xaml中,您可以创建要访问的静态控件实例;
public static StackPanel stackPanel;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
// set stackpanel for logging
stackPanel = stackPanel1;
}
然后你可以从外面的类中访问它;
MainWindow.stackPanel
答案 3 :(得分:0)
在Form2中创建事件处理程序并在Form1中订阅
public event EventHandler<UpdateListBoxEventArgs> UpdateListBox;
converter.UpdateListBox +=
new EventHandler<CVEConverter.UpdateListBoxEventArgs>(AddToListBox);
public class UpdateListBoxEventArgs : EventArgs
{
private readonly string lbTerminalText;
public UpdateListBoxEventArgs(string lbText)
{
this.lbTerminalText = lbText;
}
public string lbTerminalWindowText
{
get { return lbTerminalText; }
}
}