C# 在运行时将网格作为列表框的一项添加,最终会导致未知错误/崩溃
在下面的代码中,我正在尝试C# 在运行时将网格作为列表框的一项添加,最终会导致未知错误/崩溃,c#,windows-phone-7,listbox,grid,C#,Windows Phone 7,Listbox,Grid,在下面的代码中,我正在尝试 将文本块(txtDays)放置在网格(mygrid)(作为行)中 将网格放置在列表框(lsBox)中 最后将列表框放入另一个网格(ContentPanel) 程序正在崩溃,没有出现适当的错误,当我执行此代码时,仿真器停止。如果我将网格(在2.)放在stackPanel中,或者直接放在另一个网格(在3.)中,而不将其放在ListBox中,则代码可以工作,但不能与ListBox一起工作 如有任何意见,请提供帮助 多谢各位 private void PhoneApp
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
string[] lstDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
//Creating a ListBox
ListBox lstBox = new ListBox();
//Grid definition
Grid mygrid = new Grid();
ColumnDefinition c1 = new ColumnDefinition(); //creating a column
mygrid.ColumnDefinitions.Add(c1);
int i = -1;
foreach (string item in lstDays)
{
i += 1;
TextBlock txtDays = new TextBlock(); //Creating a TextBlock
RowDefinition r1 = new RowDefinition(); //Creating a row
mygrid.RowDefinitions.Add(r1);
txtDays.Text = item;
txtDays.TextAlignment = TextAlignment.Left;
if (item == "Thursday")
{
txtDays.TextAlignment = TextAlignment.Right;
txtDays.Foreground = new SolidColorBrush(Colors.Green);
}
mygrid.Children.Add(txtDays); //Adding the TextBlock into the grid
Grid.SetRow(txtDays,i); //Placing the item in a particular row inside the grid
lstBox.Items.Add(mygrid); //Placing grid inside a listBox (ERROR here)
}
RowDefinition rNewRow = new RowDefinition();
ContentPanel.RowDefinitions.Add(rNewRow);
ContentPanel.Children.Add(lstBox);
}
您试图在每次
foreach
迭代中将mygrid
添加到lstBox
。带lstBox.Items.Add(mygrid)代码>在循环外部,因此只添加一次
如果您想要多个网格,则可以将mygrid
的定义放入循环中。您试图在每个foreach
迭代中将mygrid
添加到lstBox
。带lstBox.Items.Add(mygrid)代码>在循环外部,因此只添加一次
如果需要多个网格,请将mygrid
的定义放在循环中。修复错误后,将代码放入循环中。对于初学者来说,这是一段很好的代码
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
string[] lstDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
//Creating a ListBox
ListBox lstBox = new ListBox();
foreach (string item in lstDays)
{
//Grid definition
Grid mygrid = new Grid();
mygrid.Width = 400;
ColumnDefinition c1 = new ColumnDefinition(); //creating a column
c1.Width = new GridLength(200);
mygrid.ColumnDefinitions.Add(c1);
RowDefinition r1 = new RowDefinition(); //Creating a row
mygrid.RowDefinitions.Add(r1);
TextBlock txtDays = new TextBlock(); //Creating a TextBlock
txtDays.Text = item;
txtDays.TextAlignment = TextAlignment.Left;
if (item == "Thursday")
{
txtDays.TextAlignment = TextAlignment.Right;
txtDays.Foreground = new SolidColorBrush(Colors.Green);
}
mygrid.Children.Add(txtDays); //Adding the TextBlock into the grid
Grid.SetRow(txtDays,0); //Placing the item in a particular row inside the grid
lstBox.Items.Add(mygrid); //Placing grid inside a listBox
}
RowDefinition rNewRow = new RowDefinition();
ContentPanel.RowDefinitions.Add(rNewRow);
ContentPanel.Children.Add(lstBox);
}
}
修复错误后,将重新启动代码。对于初学者来说,这是一段很好的代码
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
string[] lstDays = new string[] { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" };
//Creating a ListBox
ListBox lstBox = new ListBox();
foreach (string item in lstDays)
{
//Grid definition
Grid mygrid = new Grid();
mygrid.Width = 400;
ColumnDefinition c1 = new ColumnDefinition(); //creating a column
c1.Width = new GridLength(200);
mygrid.ColumnDefinitions.Add(c1);
RowDefinition r1 = new RowDefinition(); //Creating a row
mygrid.RowDefinitions.Add(r1);
TextBlock txtDays = new TextBlock(); //Creating a TextBlock
txtDays.Text = item;
txtDays.TextAlignment = TextAlignment.Left;
if (item == "Thursday")
{
txtDays.TextAlignment = TextAlignment.Right;
txtDays.Foreground = new SolidColorBrush(Colors.Green);
}
mygrid.Children.Add(txtDays); //Adding the TextBlock into the grid
Grid.SetRow(txtDays,0); //Placing the item in a particular row inside the grid
lstBox.Items.Add(mygrid); //Placing grid inside a listBox
}
RowDefinition rNewRow = new RowDefinition();
ContentPanel.RowDefinitions.Add(rNewRow);
ContentPanel.Children.Add(lstBox);
}
}
我感到羞愧:(!是的,就是这样!:)我认为把定义放在循环中是个好主意,这是我想要实现的。没关系,我们都会犯愚蠢的错误。我把它们捆成一捆我感到羞愧:(!是的,就是这样!:)我认为把定义放在循环中是个好主意,这是我想要实现的。没关系,我们都会犯愚蠢的错误。我把它们捆成一捆