Pergunta

Esta é uma resposta para a minha pergunta anterior "Fonte-dependente de controle de posicionamento."É uma tentativa de resolver o real problema que trás essa pergunta, talvez de maneiras diferentes do que a que eu estava perguntando.

Exemplo de declaração do problema: Eu quero uma caixa de seleção que diz "Ajuste de preços <X> <Y> depois de carregar," onde <X> é um número---ajustável com um NumericUpDown---e <Y> é "por cento" ou "dólares", com as escolhas feitas por um ComboBox.Este vai ser em uma única linha.

A complicação: Eu quero ser capaz de alterar os tipos de letra para todos estes controles (basicamente, definindo-os para System.Drawing.Fonts.MessageBoxFont, que é Tahoma 8 pt no Windows XP/etc.e Segoe UI 9 pt no Vista), sem bagunçar a minha disposição, que com o meu actual Position-propriedade--definição de paradigma não funciona.

Mais geralmente, eu gostaria de controles dinamicamente estabelecidas em um tipo de letra de forma independente, de modo que o <X> NumericUpDown se encaixa perfeitamente no espaço entre o "por" e o <Y> ComboBox, e da mesma forma o <X> ComboBox se encaixa com relação ao <X> CheckBox e a seqüência de caracteres "depois de carregar" o seu direito.

A parte que todo mundo parece perder: Isso tudo é aninhada dentro de uma CheckBox.Assim, idealmente, clicando sobre as palavras "depois de carregar" deve marcar/desmarcar a caixa de seleção e sorteio de pouco destaque retângulo em torno de "Ajuste de preços após o carregamento." Então, só batendo um extra Label no fim não funciona, porque então ele não alternar o CheckBox;da mesma forma, tentando band-aid coisas, suspendendo-se como um Label's Click evento não produzir o desejado destaque-retângulo.

Soluções? Neste momento estou a pensar:

  1. Repensar o problema, de alguma forma, talvez com um feio solução como duas linhas de texto separadas:"Ajustar preços encontrados depois de carregar" (CheckBox), "Valor de ajuste:" (NumericUpDown e ComboBox).Isso é muito ruim, porque a minha caixa de opções é absolutamente cheio de opções deste tipo (i.e.o tipo no exemplo), de modo que seria pelo menos o dobro em tamanho vertical.

  2. Algum tipo de controle personalizado? SplittableCheckBox?

  3. Algum tipo de magia com um TableLayout controle?(Certeza que este falhar em "a parte que todo mundo parece perder.)

  4. Desistir e voltar para o MS Sans Serif, ou usar Tahoma uniformemente, ou pacote de Segoe UI com o meu aplicativo, assim profanando o sistema de tipos de letra predefinido.

  5. (Novo, através de editar a) Mudar para WPF, se alguém pode me convencer de que ele suporta esse cenário exatamente.

Foi útil?

Solução

Se você tem várias opções que seguem este esquema, por que não criar um controle de usuário?O controle de usuário irá conter a caixa de Seleção, uma NumericUpDown, uma caixa de Combinação e um rótulo para "depois de carregar".Você pode substituir OnFontChanged para ajustar a localização dos controles com base no processamento do texto com a determinado tipo de letra.Adicionar um EventHandler para o Rótulo para marcar/desmarcar a caixa de Seleção.

Como para ter o retângulo de foco cercam a todos os controles, você deve ser capaz de dar ao usuário o controle de foco quando uma de suas interior controles é clicado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top