显示仅显示列表中的一个对象,列表未正确添加
Display brings up only one object of the list and list isn't adding properly
所以基本上我正在尝试以 windows 形式做一个项目,我确定顶点的数量并为每个顶点分配一个坐标并将其输出到另一种形式。由于某种原因,它无法正常工作,有人可以看看吗?
主窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace assignment
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public List<Vertex> vertexList = new List<Vertex>();
private void Exit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Create_Click(object sender, EventArgs e)
{
int vertices = 0, edges = 0;
try
{
vertices = (int)Convert.ToInt32(txtVertices.Text);
edges = (int)Convert.ToInt32(txtEdges.Text);
if (vertices < 0)
MessageBox.Show("Vertices cannot be less than 0", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
if (edges < 0 || edges > 1)
MessageBox.Show("Edges have to be 0..1", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
//MessageBox.Show("Graph successfully created", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
for (int i = 0; i < vertices; i++)
{
Vertex vertex = new Vertex();
Vertex vertex1 = vertex.CreateVertex(vertices);
vertexList.Add(vertex1);
}
VertexDisplay display = new VertexDisplay();
display.DisplayVertices(vertexList);
display.Show();
}
}
catch(Exception x)
{
MessageBox.Show("Vertices or edges Cannot be left out", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
顶点Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace assignment
{
public class Vertex
{
public int x;
public int y;
public int z;
public int vertexID;
public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = value; }
}
public int Z
{
get { return z; }
set { z = value; }
}
public int VertexID
{
get { return vertexID; }
set { vertexID = value; }
}
public Vertex CreateVertex(int noOfVertex)
{
Random rnd = new Random();
Vertex vertex = new Vertex(x, y, z, vertexID);
MainForm mainform = new MainForm();
vertex.x = rnd.Next(0, 100);
vertex.y = rnd.Next(0, 100);
vertex.z = rnd.Next(0, 100);
vertex.vertexID = rnd.Next(0, noOfVertex);
return(vertex);
}
public Vertex()
{
}
public Vertex(int x, int y, int z, int id)
{
this.x = x;
this.y = y;
this.z = z;
this.vertexID = id;
}
}
}
显示自
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace assignment
{
public partial class VertexDisplay : Form
{
public VertexDisplay()
{
InitializeComponent();
MainForm mainform = new MainForm();
DisplayVertices(mainform.vertexList);
}
public void DisplayVertices(List<Vertex>vertexList)
{
int x, y, z, id;
foreach(Vertex vertexDetails in vertexList)
{
x = vertexDetails.X;
y = vertexDetails.Y;
z = vertexDetails.Z;
id = vertexDetails.VertexID;
txtVertexDisplay.Text = string.Join(Environment.NewLine, " ID: " + id + " x: " + x + " y: " + y + " z: " + z);
}
}
}
}
您在 Foreach 循环内设置 txtVertexDisplay.Text 属性,因此您在每次循环迭代时都设置它。它不是串联,它总是被设置为完全正确的东西。如果您想连接您的输出 - 使用一些临时字符串 属性 和 += 运算符。见下文:
public void DisplayVertices(List<Vertex>vertexList)
{
String displayText = string.Empty;
int x, y, z, id;
foreach(Vertex vertexDetails in vertexList)
{
x = vertexDetails.X;
y = vertexDetails.Y;
z = vertexDetails.Z;
id = vertexDetails.VertexID;
displayText += string.Join(Environment.NewLine, " ID: " + id + " x: " + x + " y: " + y + " z: " + z);
}
txtVertexDisplay.Text = displayText;
}
所以基本上我正在尝试以 windows 形式做一个项目,我确定顶点的数量并为每个顶点分配一个坐标并将其输出到另一种形式。由于某种原因,它无法正常工作,有人可以看看吗?
主窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace assignment
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
public List<Vertex> vertexList = new List<Vertex>();
private void Exit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Create_Click(object sender, EventArgs e)
{
int vertices = 0, edges = 0;
try
{
vertices = (int)Convert.ToInt32(txtVertices.Text);
edges = (int)Convert.ToInt32(txtEdges.Text);
if (vertices < 0)
MessageBox.Show("Vertices cannot be less than 0", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
if (edges < 0 || edges > 1)
MessageBox.Show("Edges have to be 0..1", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
//MessageBox.Show("Graph successfully created", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
for (int i = 0; i < vertices; i++)
{
Vertex vertex = new Vertex();
Vertex vertex1 = vertex.CreateVertex(vertices);
vertexList.Add(vertex1);
}
VertexDisplay display = new VertexDisplay();
display.DisplayVertices(vertexList);
display.Show();
}
}
catch(Exception x)
{
MessageBox.Show("Vertices or edges Cannot be left out", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
顶点Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace assignment
{
public class Vertex
{
public int x;
public int y;
public int z;
public int vertexID;
public int X
{
get { return x; }
set { x = value; }
}
public int Y
{
get { return y; }
set { y = value; }
}
public int Z
{
get { return z; }
set { z = value; }
}
public int VertexID
{
get { return vertexID; }
set { vertexID = value; }
}
public Vertex CreateVertex(int noOfVertex)
{
Random rnd = new Random();
Vertex vertex = new Vertex(x, y, z, vertexID);
MainForm mainform = new MainForm();
vertex.x = rnd.Next(0, 100);
vertex.y = rnd.Next(0, 100);
vertex.z = rnd.Next(0, 100);
vertex.vertexID = rnd.Next(0, noOfVertex);
return(vertex);
}
public Vertex()
{
}
public Vertex(int x, int y, int z, int id)
{
this.x = x;
this.y = y;
this.z = z;
this.vertexID = id;
}
}
}
显示自
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace assignment
{
public partial class VertexDisplay : Form
{
public VertexDisplay()
{
InitializeComponent();
MainForm mainform = new MainForm();
DisplayVertices(mainform.vertexList);
}
public void DisplayVertices(List<Vertex>vertexList)
{
int x, y, z, id;
foreach(Vertex vertexDetails in vertexList)
{
x = vertexDetails.X;
y = vertexDetails.Y;
z = vertexDetails.Z;
id = vertexDetails.VertexID;
txtVertexDisplay.Text = string.Join(Environment.NewLine, " ID: " + id + " x: " + x + " y: " + y + " z: " + z);
}
}
}
}
您在 Foreach 循环内设置 txtVertexDisplay.Text 属性,因此您在每次循环迭代时都设置它。它不是串联,它总是被设置为完全正确的东西。如果您想连接您的输出 - 使用一些临时字符串 属性 和 += 运算符。见下文:
public void DisplayVertices(List<Vertex>vertexList)
{
String displayText = string.Empty;
int x, y, z, id;
foreach(Vertex vertexDetails in vertexList)
{
x = vertexDetails.X;
y = vertexDetails.Y;
z = vertexDetails.Z;
id = vertexDetails.VertexID;
displayText += string.Join(Environment.NewLine, " ID: " + id + " x: " + x + " y: " + y + " z: " + z);
}
txtVertexDisplay.Text = displayText;
}