簡體   English   中英

如何在 Gtk# 中做粗體、斜體、下划線按鈕,又名如何在 gtk 中動態格式化文本

[英]How to do Bold, Italic, Underline buttons in Gtk# aka How to dynamically format text in gtk

也許這是一個有點寬泛或模糊的問題。

我在網上找不到任何對我有意義的東西,我正在使用 Gtk2.0 和 C#,關於如何在線執行此操作的每個參考都是使用不同的語言,似乎只是函數名稱列表,或者只有在從代碼生成文本時在 textview 中格式化文本的示例(即,創建一個句子“Hello World。”然后將 hello 設為粗體。似乎沒有人在談論如何做到這一點,而且似乎就像一個非常基本的功能。

將某些文本設為粗體非常容易,例如:

protected void Command_bold(object sender, EventArgs e)
{
    if (selectedTextView.Buffer.GetSelectionBounds(out A, out B))
    {
        selectedTextView.Buffer.ApplyTag("bold", A, B);
    }
}

但是,當我用一個按鈕觸發這個功能時,它只會使事情變得粗體(或斜體......等)。 粗體按鈕的正常功能會在某些選擇或沒有選擇已經是粗體的情況下使所有選擇加粗,或者如果所有選擇都為粗體則使其全部不加粗。

那么,您如何在 Gtk TextView 對象中檢測您的文本是否已經加粗?

好的,所以我想通了。 或多或少。 下面的邏輯有缺陷,但這是一種檢測標簽和控制粗體按鈕邏輯的方法:

protected void Action_Bold(object sender, EventArgs e)
{
    TextIter iA, A, B;
    bool isBold = false;
    if (selectedTextView.Buffer.GetSelectionBounds(out A, out B))
    {
        iA = A;
        while (iA.Compare(B) < 0)
        {
            foreach (TextTag tag in A.Tags)
            {
                if (tag.Name == "bold") isBold = true;
            }

            iA.ForwardChar();

        }

        if (isBold == true)
        {
            selectedTextView.Buffer.RemoveTag("bold", A, B);
        }
        else
        {
            selectedTextView.Buffer.ApplyTag("bold", A, B);
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM