Перемещение DataGridViewRow на 1 см за 1 час - PullRequest
0 голосов
/ 16 марта 2012

Для Winform DataGridView я хочу переместить строки вверх / вниз на 1 см за 1 час.Я гуглил об этом, но не смог найти ничего, что могло бы дать мне подсказку.Просто чтобы быть более конкретным, скажем, у меня есть открытая форма на моем компьютере с DataGridView, заполненным данными.И если я посмотрю на DataGridView через 1 час, его нужно переместить на 1 см вверх / вниз.Движение должно быть таким, чтобы пользователь даже не осознавал, и не будет никаких проблем при щелчке / выборе ячеек / строк.

Может кто-нибудь указать мне, с чего начать и как я могу реализоватьэто?

Примечание: Сетка останется такой, как есть.Всего за 1 час ряды будут подниматься / опускаться на 1 см. Спасибо, MChicago

1 Ответ

0 голосов
/ 16 марта 2012

Этот код будет автоматически прокручивать DataGridView с помощью таймера: чтобы переместить 1com в течение одного часа, вам нужно будет экспериментально найти правильное значение для интервала ..

    public partial class Form1 : Form
    {
        private readonly Timer tmr = new Timer();
        private int start;

        public Form1()
        {
            InitializeComponent();

            tmr.Interval = 100;
            tmr.Tick += scrollGrid;
            tmr.Enabled = true;

            List<DisplayItem> list = new List<DisplayItem>
                {
                    new DisplayItem("Apple"),
                    new DisplayItem("Orange"),
                    new DisplayItem("Banana"),
                    new DisplayItem("Grape")
                };
            // Make a long enough list to see the scrolling
            dgv.DataSource = list.Concat(list).Concat(list).ToList();
        }    

        private void scrollGrid(object sender, EventArgs e)
        {
            PropertyInfo verticalOffset = dgv.GetType()
               .GetProperty("VerticalOffset", BindingFlags.NonPublic | 
                                              BindingFlags.Instance);


            start += 1;
            verticalOffset.SetValue(this.dgv, start, null);
        }

        private class DisplayItem
        {
            public DisplayItem(string s)
            {
                this.Value = s;
            }

            public string Value { get; set; }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...