3

私はコード エディターに取り組んでおり、数値が大きくなるにつれてラベルの幅を自動調整したいと考えています。たとえば、1 ~ 9 (1 桁) には特定の幅があります。そして10-99(2桁)になるとラベルの幅が増えます。次に、100 ~ 999 (3 桁) などです。

結果は次のようになります。

ここに画像の説明を入力

これが私のコードです:

private void timer_countline_Tick(object sender, EventArgs e)
{
    updateNumberLabel();
}

private void updateNumberLabel()
{
    // we get index of first visible char and number of first visible line
    Point pos = new Point(0, 0);
    int firstIndex = rtb.GetCharIndexFromPosition(pos);
    int firstLine = rtb.GetLineFromCharIndex(firstIndex);

    // now we get index of last visible char and number of last visible line
    pos.X = ClientRectangle.Width;
    pos.Y = ClientRectangle.Height;
    int lastIndex = rtb.GetCharIndexFromPosition(pos);
    int lastLine = rtb.GetLineFromCharIndex(lastIndex);

    // this is point position of last visible char, we'll use its Y value for calculating numberLabel size
    pos = rtb.GetPositionFromCharIndex(lastIndex);

    // finally, renumber label
    numberLabel.Text = "";
    for (int i = firstLine; i <= lastLine + 1; i++)
        numberLabel.Text += i + 1 + "\n";
}
4

1 に答える 1