我想在wpf上重做旧的Windows窗体应用程序的代码,我在引用datagridview时遇到问题。
这是我旧应用程序的无效外观:
private void button2_Click(object sender, EventArgs e)
{
if (DGV1.Rows.Count > 0 && DGV1.SelectedRows != null)
{
bool wart = true;
for (int i = 0; i < listBox2.Items.Count; i++)
{
listBox2.SelectedIndex = i;
int w1 = Int32.Parse(listBox2.SelectedItem.ToString());
int w2 = Int32.Parse(DGV1.SelectedRows[0].Cells[0].Value.ToString());
if (w1 == w2)
{
wart = false;
break;
}
}
if (wart)
{
listBox2.Items.Add(DGV1.SelectedRows[0].Cells[0].Value);
}
}
}
这是我的新应用程序的无效外观:
private void Button1_Click(object sender, RoutedEventArgs e)
{
IList rows = dataGrid1.SelectedItems;
if(dataGrid1.SelectedItem != null)
{
bool wart = true;
for (int i =0; i < listBox1.Items.Count; i++)
{
listBox1.SelectedIndex = i;
object item = dataGrid1.SelectedItem;
int w1 = Int32.Parse(listBox1.SelectedItem.ToString());
int w2 = Int32.Parse(dataGrid1.SelectedCells[0].Column.GetCellContent(item).ToString()); <--- !!
if(w1 == w2)
{
wart = false;
break;
}
}
if(wart)
{
listBox1.Items.Add(dataGrid1.SelectedCells[0]); <-- !!
}
}
}
请帮助: - )
答案 0 :(得分:0)
应该是这样的:
listBox1.Items.Add(dataGrid1.CurrentRow.Cells[0].Value);
此代码来自WinForms,但我认为wpf的编码可能没有不同,因为两者都在c#中。
答案 1 :(得分:0)
dataGrid1.SelectedItem
不只是一些object
,它具有具体的类型和属性,如Id
,Tytul
,Kategorie
,Text
< / p>
您需要对该具体类型和访问属性进行强制转换,而不是尝试从DataGridCellInfo等低级UI元素中获取值:
var item = (MyConcreteClass)dataGrid1.SelectedItem;
int w2 = item.Id;