标签: currencymanager

将DataSource设置为Datagridview后添加一行

我有很多与datagrid的数据源绑定有关的问题.我有一个DatagridView,我从列表中设置DataSource

List<Myclass> li = new List<MyClass>();

MyClass O = new MyClass();
O.Name = "Aden";
O.LastName = "B";
O.Id = 12;
li.Add(O);
O = new MyClass();
O.Name = "Li";
O.LastName = "S";
O.Id = 22;
li.Add(O);

Mydgv.DataSource = li;
Run Code Online (Sandbox Code Playgroud)

MyClass的地方

public Class MyClass
{
 public string Name {get; set;}
 public string LastName {get; set;}
 public decimal Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在想要添加一个新的行到我的DataGridView

DataGridViewRow row = (DataGridViewRow)yourDataGridView.Rows[0].Clone();
row.Cells[0].Value = "XYZ";
row.Cells[1].Value = 50.2;
Mydgv.Rows.Add(row);
Run Code Online (Sandbox Code Playgroud)

但它是不可能的,因为它引发错误的数据源的DataGrid与列表绑定.所以我的第一个问题是我怎么能这样做?

我的第二个问题是,为了做到这一点,我提出了一个解决方案来改变我的List li并向其添加新行数据,然后将其设置为datagrid的数据源,但我认为它不是一个可行的解决方案是否有更好的解决方案?

甚至试图通过CurrencyManager来做到这一点

CurrencyManager …
Run Code Online (Sandbox Code Playgroud)

c# data-binding datasource datagridview currencymanager

15
推荐指数
1
解决办法
2万
查看次数

C#绑定:如何在BindingList中禁用CurrencyManager,以便不维护当前项位置并且不发信号?

我有两个数据包到同一个BindingList的ListBox.

问题是当从GUI更改所选项时,它正在改变BindingList中的位置,然后BindingList发信号通知另一个ListBox以更改其所选项.

所以我已经同步了两个ListBoxes Selected Item,这对我不利.

我想保持项目列表同步.没有光标位置.

如何禁用该光标以使其不被维护?

示例代码(只需在设计时向表单添加两个ListBox,并注册SelectedIndexChanged事件并使用按钮注册按钮单击事件):

public partial class Form1 : Form
{
    BindingList<string> list = new BindingList<string>();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        list.Add("bla1");
        list.Add("bla2");
        list.Add("bla3");

        this.listBox1.DataSource = list;
        this.listBox2.DataSource = list;
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex != -1)
            System.Diagnostics.Trace.WriteLine("ListBox1: " + listBox1.SelectedItem.ToString());
    }

    private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox2.SelectedIndex != -1)
            System.Diagnostics.Trace.WriteLine("ListBox2: " + listBox2.SelectedItem.ToString());
    }

    // Register this event to a …
Run Code Online (Sandbox Code Playgroud)

c# data-binding binding currencymanager

2
推荐指数
1
解决办法
3746
查看次数