Re: Форматирование листинга программы.
От: J.Quintana  
Дата: 30.04.04 06:58
Оценка:
Здравствуйте, gde11, Вы писали:

G>Задача такая — надо автоматом форматированить cpp-листинг на web-странице (ключевые слова своим цветом и т. п.). Пробовал создать ascx-компонент. Но как передать в него листинг форматируемой программы? Пробовал так:

G><uc1:content id="Content1" runat="server">int a;
G>for(int i;...
G></uc1:content>
G> — возникает ошибка — мол, нельзя писать между тегами. Если же ставить текст прямо в коде компонента, то все нормально.
G>Подскажите, кто знает, как это правильно делать.


Правильно будет использовать Custom Control, а не User Control — тебе же все равно Render переписывать.
А UserControl'у текст можно передать так:

[ System.Web.UI.ParseChildren(ChildrenAsProperties = false)  ]
public class Content : System.Web.UI.UserControl
{
///

В твоем примере к коллекции Content.Controls будет добавлен LiteralControl, у которого Text будет равен "int a; и т.д."

Теперь нужно Render переписать:
protected override void Render(HtmlTextWriter output) 
{
    if ( this.HasControls() )
    {
        LiteralControl ctl = this.Controls[this.Controls.Count - 1] as LiteralControl; 
        if ( ctl != null )
            output.Write("<span style=\"color: green; font: normal 48pt courier;\">" + ctl.Text + "</span>");
    }
}

Но правильно, все-таки, Custom Control.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.