Как Вы наследовали StringBuilder в vb.net?

Класс ViewGroup имеет метод с именем onInterceptTouchEvent(ev: MotionEvent), который возвращает значение Boolean. Если вы хотите, чтобы ваш взгляд «украл» сенсорное событие, вы должны вернуть true и false в противном случае.

Например, если вы хотите, чтобы представление вашего рециркулятора прокручивалось только вертикально, вам необходимо переопределить onInterceptTouchEvent(ev: MotionEvent) в вашем классе ViewPager и определить тип прокрутки.

Это будет выглядеть так:

class MyViewPager {
    override fun onInterceptTouchEvent(ev: MotionEvent): Boolean = 
       !isVerticalScroll()
}

Метод isVerticalScroll() должен быть создан вами и возвращать текущее направление прокрутки.

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

6
задан Anders 7 October 2008 в 16:10
поделиться

6 ответов

StringBuilder NotInheritable (иначе sealed в C#), таким образом, Вы не можете произойти из него. Вы могли попытаться перенестись StringBuilder в Вашем собственном классе или рассматривают использование дополнительных методов вместо этого.

16
ответ дан 8 December 2019 в 04:56
поделиться

Нет, StringBuilder является классом NotInheritable. Вы могли попытаться перенести экземпляр StringBuilder, но не можете наследоваться ему. Можно также использовать дополнительные методы при использовании.NET 3.5.

3
ответ дан 8 December 2019 в 04:56
поделиться

Это - то, что я придумал для тех, кому любопытно:

Imports System.Runtime.CompilerServices
Module sbExtension
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, _
                                   ByVal arg0 As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, arg0), ControlChars.NewLine)
    End Sub
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, ByVal arg0 As Object, _
                                   ByVal arg1 As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, arg0, arg1), ControlChars.NewLine)
    End Sub
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, _
                                   ByVal arg0 As Object, _
                                   ByVal arg1 As Object, _
                                   ByVal arg2 As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, arg0, arg1, arg2), ControlChars.NewLine)
    End Sub
    <Extension()> _
   Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                  ByVal format As String, _
                                  ByVal ParamArray args() As Object)
        oStr.AppendFormat("{0}{1}", String.Format(format, args), ControlChars.NewLine)
    End Sub
End Module
2
ответ дан 8 December 2019 в 04:56
поделиться

StringBuilder изолируется. Вы не можете наследоваться ему.

1
ответ дан 8 December 2019 в 04:56
поделиться

StringBuilder является запечатанным классом..., таким образом, наследование не позволяется.

1
ответ дан 8 December 2019 в 04:56
поделиться

При использовании более ранней версии .NET можно записать в основном тот же класс StringBuilderExtensions и затем явно назвать статический метод вместо этого.

С.Net 3.5: myStringBuilder.MyExtensionMethod(etc...);

Пред-.Net 3.5: StringBuilderExtensions.MyExtensionMethod(myStringBuilder, etc...);

1
ответ дан 8 December 2019 в 04:56
поделиться
Другие вопросы по тегам:

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