C# datagridview返回开始项

C# datagridview返回开始项,c#,C#,嗨,我有一个DataGridview,里面有15个项目。 从第5项开始,我想将其中14项添加到阵列中。 我想回到datagridview最后一个元素之后的开始 public partial class exmple : Form { public exmple() { InitializeComponent(); } private DataGridView MyDw(DataGridView DVG) { for (in

嗨,我有一个DataGridview,里面有15个项目。 从第5项开始,我想将其中14项添加到阵列中。 我想回到datagridview最后一个元素之后的开始

public partial class exmple : Form
{
    public exmple()
    {
        InitializeComponent();
    }

    private DataGridView MyDw(DataGridView DVG)
    {
        for (int i = 1; i <= 15; i++)
        {
            DataGridViewRow CreateRow = new DataGridViewRow();
            CreateRow.CreateCells(DVG);
            CreateRow.Cells[0].Value = i-1;
            CreateRow.Cells[1].Value = "A"+i;
            DVG.Rows.Add(CreateRow);
        }
        DVG.Columns[0].Width = 50;
        DVG.Columns[1].Width = 25;
        DVG.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        DVG.RowHeadersVisible = false;
        return DVG;

    }

    private void exmple_Load(object sender, EventArgs e)
    {
        MyDw(dataGridView1);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int beginrow = 5;
        ArrayList MyArray = new ArrayList { };
        for (int i = 0; i < 14; i++)
        {

            MyArray.Add(dataGridView1.Rows[beginrow + i].Cells[1].Value.ToString().Trim());

        }
    }
}
public分部类示例:表单
{
公共示例()
{
初始化组件();
}
专用DataGridView MyDw(DataGridView DVG)
{

因为(inti=1;i可以这样做

private void button1_Click(object sender, EventArgs e)
{
    int beginrow = 5;

    int takeCount = 14;
    int count = 0;

    var myList = new List<string>();

    for(var i  = beginrow; i < dataGridView1.RowCount && count < takeCount; i ++)
    {       
        count ++;
        myList.Add(dataGridView1.Rows[beginrow + i].Cells[1].Value.ToString().Trim());

        if(i + 1 == dataGridView1.RowCount) 
        {
            i = -1;
        }
    }
}
private void按钮1\u单击(对象发送者,事件参数e)
{
int beginrow=5;
int takeCount=14;
整数计数=0;
var myList=新列表();
对于(var i=beginrow;i
仅供参考,您应该尽可能在
数组列表上使用
List
从第5项开始,我想将其中14项放到数组中。我想在datagridview的最后一个元素之后回到开始处
,那么问题是什么,我在您的帖子中没有看到一个?视图不应该考虑逻辑。也就是说视图模型的作用。如果您想处理按钮单击事件,请在视图模型中使用ICommand,同时使用可观察集合和INotifyPropertyChanged界面。可以找到很多关于MVVM的信息。在视图中引用控件元素为您执行逻辑操作是毫无意义的。这被认为是错误的设计。在数据网格中循环索引是不必要的。这就是绑定的魔力为您所做的。您应该看看MVVM,了解如何正确构建应用程序。@timunix您意识到这是一个Windows窗体应用程序,是吗?这不太适合MVVM。不是说,而是建议OP将您最喜欢的模式硬塞入其中一个被迫使用它的平台没有多大帮助。不管它是Windows窗体还是WPF或其他什么。我的观点是,循环一个数据网格的值,并将其保存到一个数组中,该数组与它的视图位于同一个类中,这绝对不是推荐的和可怕的设计。而且,使用索引da进行硬编码tagrid行和列更糟糕,更不用说view类中的单击事件了。这是意大利面代码,设计非常糟糕。现在可能还可以,但如果以后添加按钮单击和类似的datagrid逻辑,它肯定会中断,并保证有重复的代码。如果添加新列或更改列,或者更改逻辑,会发生什么?你将不得不在几个地方更改重复的代码。不灵活,不可扩展,也没有地方用这种糟糕的设计进行测试。每当你更改逻辑时会发生什么?这是什么样的注释..如果你更改任务的要求,显然在大多数情况下都需要更改代码..这个答案并不意味着NT是灵活、宽广、甚至是作证的。这是OP采取和处理他们需要的任何东西的起点。这是建设性的欺诈行为,因为这样的设计,OP不会取得任何长期的进展,但如果事先警告他们,就会遇到问题,这是可以避免的。oach是最好的方法。这种设计甚至不能完全满足可靠原则的要求。这就是为什么我必须在这里提出一个大警告。在大多数情况下,如果获得新的需求,您不需要更改所需的内容,这不是真的。相反。MVVM的思想是,您不需要更改现有代码,理想情况下,但只是扩展它。MVVM的想法不是让你
不需要更改现有代码
…它是为了在用户界面和业务逻辑之间提供一个分离的关注点,并且总体上允许更容易地测试逻辑…你远远超出了OP在问题中提出的范围heh。。。