Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Текс в TextBox разными цветами


Автор: GRIENDERS 24.7.2007, 09:04
Делаю чат. Необходимо чтобы в TextBox имена "чатующихся" были выделены разными цветами. Можно ли это сделать?
Вот код
   
Код

 protected void Page_Load(object sender, EventArgs e)
    {
        tbSay.Focus();
        
        CurrentUser = Context.User.Identity.Name;
        if (CurrentUser == "")
            lbCurrentUser.Text = "В моих глазах ты НИКТО";
        else
            lbCurrentUser.Text = "В моих глазах ты " + CurrentUser;

        #region Заполняем окно чата
        OleDbConnection connection = new OleDbConnection(
            System.Configuration.ConfigurationSettings.AppSettings["MS_ACCESS_CONNECTION"]
            );
        OleDbCommand cmd = new OleDbCommand("SELECT * FrOM Messages", connection);
        connection.Open();
        OleDbDataReader reader =cmd.ExecuteReader();
        if (IsPostBack)
            tbChart.Text = "";
        while (reader.Read())
        {
// ВОТ ТУТУ ЧЕ-ТО нАДО СДЕЛАТЬ
          //  tbChart.Font.Bold = true;
            System.Drawing.Color OldColor = tbChart.ForeColor; 
            System.Drawing.Color NewColor = System.Drawing.Color.FromKnownColor(System.Drawing.KnownColor.Azure);
            
            string OldText = tbChart.Text;


            tbChart.Text += "[" + reader[0]  + "]" + ":  ";
            //tbChart.ForeColor = OldColor;

           // tbChart.Font.Bold = false;
            tbChart.Text += reader[1] + "\r\n";

            
        }
        connection.Close();
        #endregion

        Response.AddHeader("refresh", "10");

       
    }

// Кнопка Отправить
    protected void Button1_Click(object sender, EventArgs e)
    {
       // tbSay.Text = "";
        OleDbConnection connection = new OleDbConnection(
           System.Configuration.ConfigurationSettings.AppSettings["MS_ACCESS_CONNECTION"]
           );

        OleDbCommand cmd = new OleDbCommand("insert into Messages values(?,?)", connection);

        cmd.Parameters.Add("", OleDbType.VarChar, 50, "Login").Value = CurrentUser;
        cmd.Parameters.Add("", OleDbType.VarChar, 255, "Message").Value = tbSay.Text;
        connection.Open();
        cmd.ExecuteNonQuery();
        connection.Close();

    }



Автор: Mymik 24.7.2007, 12:07
    GRIENDERS, Если очень сильно захотеть, то можно все -- для этого у нас есть JS(надо использовать дополнительный div поверх основного TextBox. В твоем TextBox перехватывать нажатие клавиш и выводить текст в твой Div, однако при этом тебе надо перехватывать нажатия BackSpace. но это пол беды, самая большая беда будет с Copy/Paste ибо перехват этих событий разрешен только для локального сайта (запущенного с локального адреса). А если сайт из инета запущен, тогда буде вылетать предупреждение, мол скрипт пытается получить доступ к компьютеру и так далее). Но ИМХО это слишком и слишком геморно. Слишком усложниться код сайта.

Автор: Pankon 24.7.2007, 12:35
GRIENDERS, а обязательно использовать TextBox? Ведь можно выводить и в другие контролы...

Автор: Mymik 24.7.2007, 13:57
Pankon, главное возможность редактирования этих контролов... а все эти контролы это input"ы. А в них нельзя писать разноцветным текстом. Только одним выбранным цветом.

Автор: 7592374 20.1.2008, 15:00
ха интересно,а как же аська....там окне сообщения ники красным синим текст черным????????

Автор: tol05 20.1.2008, 15:19
аська - это десктоп приложение. Я тебе в десктоп приложении текст могу пингвинами в 33 позах камасутры разрисовать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)