Можно попытаться использовать '''onkeydown''' событие и отменить событие (event.preventDefault или что-то как этот), когда это не один из позволенных ключей.
WebClient не имеет свойства тайм-аута, однако его можно наследовать от WebClient, чтобы предоставить доступ к таймауту для используемого внутреннего WebRequest:
public class WebClientEx : WebClient
{
public int Timeout {get; set;}
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
request.Timeout = Timeout;
return request;
}
}
Использование:
var myClient = new WebClientEx();
myClient.Timeout = 900000 // Daft timeout period
myClient.UploadData(myUri, myData);