Как я могу установить положение своей datagrid полосы прокрутки в моем приложении winforms?

Строгие стандарты: нестатический метод [& lt; class> :: & lt; method>] не следует называть статически

Происходит при попытке вызова не- статический метод для класса, поскольку он был статичным, и вы также имеете флаг E_STRICT в настройках error_reporting().

Пример:

class HTML {
   public function br() {
      echo '
'; } }

HTML::br() или $html::br()

Вы действительно можете избежать этой ошибки, не добавляя E_STRICT к error_reporting(), например

error_reporting(E_ALL & ~E_STRICT);

, поскольку, как и для PHP 5.4.0 и выше, E_STRICT включен в E_ALL [ ref ]. Но это не рекомендуется. Решение состоит в том, чтобы определить вашу предполагаемую статическую функцию как фактическую static:

public static function br() {
  echo '
'; }

или вызвать функцию условно:

$html = new HTML();
$html->br();

Похожие вопросы:

27
задан Pollitzer 25 January 2017 в 16:34
поделиться

2 ответа

Вы на самом деле не взаимодействуете непосредственно с полосой прокрутки, скорее Вы устанавливаете FirstDisplayedScrollingRowIndex. Таким образом, прежде чем это перезагружает, получите тот индекс, как только это перезагружается, сбросьте его к тому индексу.

РЕДАКТИРОВАНИЕ: Положительная сторона в комментарии. Если Вы будете использовать DataGridView тогда, то это будет работать. Если Вы используете старое DataGrid тогда самый легкий способ сделать, который должен наследоваться ему. Посмотрите здесь: Связь

DataGrid имеет защищенный метод GridVScrolled, который может использоваться для прокрутки сетки к определенной строке. Для использования его получите новую сетку из DataGrid и добавьте метод ScrollToRow.

код C#

public void ScrollToRow(int theRow)
{
    //
    // Expose the protected GridVScrolled method allowing you
    // to programmatically scroll the grid to a particular row.
    //
    if (DataSource != null)
    {
        GridVScrolled(this, new ScrollEventArgs(ScrollEventType.LargeIncrement, theRow));
    }
}
38
ответ дан Mark 28 November 2019 в 05:08
поделиться

Да, определенно FirstDisplayedScrollingRowIndex. Необходимо будет получить это значение после некоторого взаимодействия с пользователем, и затем после перезагрузок сетки, Вы захотите задержать его к старому значению.

, Например, если перезагрузка инициирована щелчком кнопки, то в обработчике нажатий кнопки, Вы могли бы хотеть иметь как своя первая строка команда, которая помещает это значение в переменную:

// Get current user scroll position
int scrollPosition = myGridView.FirstDisplayedScrollingRowIndex;

// Do some work
...

// Rebind the grid and reset scrolling
myGridView.DataBind;
myGridView.FirstDisplayedScrollingRowIndex = scrollPosition;
9
ответ дан sfuqua 28 November 2019 в 05:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: