这可能是一个问题的广泛或模糊。
我无法在网上找到对我有意义的任何内容,我正在使用Gtk2.0和C#,并且每个关于如何在线进行此操作的参考都是使用不同的语言,而且似乎只是一个函数名称列表,或者只有在从代码生成文本时在文本视图中格式化文本的示例(即,创建一个句子" Hello World。"然后打个招呼粗体。似乎没有人在谈论如何做到这一点,它似乎是一个相当基本的功能。
将某些文字加粗是非常容易的,例如:
protected void Command_bold(object sender, EventArgs e)
{
if (selectedTextView.Buffer.GetSelectionBounds(out A, out B))
{
selectedTextView.Buffer.ApplyTag("bold", A, B);
}
}
但是,当我用一个按钮触发这个功能时,它只会使事情变得粗体(或斜体......等等)。粗体按钮的正常功能会使所有选择都变为粗体,如果选择中的某些选项已经加粗,或者如果所有选项都是粗体,则使其全部不是粗体。
那么,如果你的文本是否已经加粗,你如何在Gtk TextView对象中检测到?
答案 0 :(得分:1)
好的,所以我明白了。或多或少。下面的逻辑是有缺陷的,但这是一种检测标签和控制粗体按钮逻辑的方法:
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);
}
}
}