2011-08-26 6 views
5

Come posso ottenere un'interruzione di riga in TextBox in WP7? Sto sviluppando un'applicazione basata su social (come Facebook) e se imposto AcceptReturn = true, mi dà un'interruzione visiva (ui), ma quando invio questo testo al server posso vedere che non c'è interruzione di riga. Perfavore aiutami con questo problema. Ho provatoInterruzione di riga in TextBox

void whatsend_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) { 
     if (e.Key == Key.Enter) { 
     whatsend.Text +="\r";//or /n,
 
     } 
    } 

ma senza successo.

risposta

5

Windows utilizza \r\n per interruzioni di riga, non \r, ma è irrilevante; utilizzare invece Environment.NewLine.

Inoltre, per la documentazione:

vero se il tasto ENTER crea una nuova riga di testo in una versione più righe del controllo; false se il tasto INVIO attiva il pulsante predefinito per il modulo. Il valore predefinito è falso.

Hai impostato MultiLine a true?

MODIFICA: Ahhh, WP7 ... here is an article I found che tenta di creare una casella di testo multilinea in WP7.

+0

Quando invio il testo, l'interruzione di riga nella casella di testo viene visualizzata come spazio. – SevenDays

+1

@wsevendays: la tua casella di testo è multilinea, cioè hai impostato 'MultiLine = true'? In caso contrario, 'AcceptsReturn' non ha alcun effetto per la documentazione. –

+0

Il controllo TextBox in WP7 non ha il valore "MultiLine". – SevenDays

0

Non ho familiarità con WP7 ma Windows in generale utilizza "\r\n" (cioè entrambi i caratteri uno dopo l'altro) per indicare un'interruzione di riga.

Se si aggiungono entrambi al testo, risolve il problema?

Detto questo, sono sorpreso che le interruzioni di riga digitate vengano rimosse dalla casella di testo. Quando dici che il testo non è visualizzabile sul server, cosa intendi? È che il testo non viene inviato e/o registrato sul server o che il tuo metodo di visualizzazione sul server non lo mostra?

+0

Il testo nella finestra di dialogo (lascia che sia il servizio come Facebook) schermi senza interruzione di linea, solo con lo spazio . – SevenDays

2

Environment.NewLine se è lo stesso del normale sviluppo.

+0

Questo è molto più lungo di "\ r \ n", e ingrandisce il tuo codice un bel po 'se ne hai molti. Qual è la differenza e perché non dovresti semplicemente usare "\ r \ n"? – qJake

+0

Chi se ne importa se è più dettagliato? Avrebbe corretto il bug in quanto hai usato il carattere di nuova riga sbagliato. È una costante, potrebbe potenzialmente cambiare (anche se è improbabile), basta usarla. A nessuno importa quanto breve sia il tuo codice, a loro importa se funziona davvero. Se non ti piace digitarlo, memorizzalo prima in una variabile; 'var nl = Environment.NewLine'. –

+0

Quando invio il testo, l'interruzione di riga nella casella di testo viene visualizzata come spazio e inserimenti di nuova riga all'inizio della casella di testo, non alla fine. – SevenDays

2

basta aggiungere sotto portata in codice XAML:

AcceptsReturn="True" TextWrapping="Wrap" 

qualcosa di simile:

<TextBox x:Name="InputText" Height="200" VerticalAlignment="Top" Width="456" TextAlignment="Center" TextWrapping="Wrap" AcceptsReturn="True"/>