Свяжите nullable DateTime с MaskedTextBox

Вы смотрели на Ringdroid ?. Это довольно легкий вес и интеграция проста. Он также хорошо работает с медиа-файлами VBR.

Если у вас возникли проблемы с продолжительностью, вы можете сделать что-то вроде ниже, используя Ringdroid.

public class AudioUtils
{
    public static long getDuration(CheapSoundFile cheapSoundFile)
    {
        if( cheapSoundFile == null)
            return -1;
        int sampleRate = cheapSoundFile.getSampleRate();
        int samplesPerFrame = cheapSoundFile.getSamplesPerFrame();
        int frames = cheapSoundFile.getNumFrames();
        cheapSoundFile = null;
        return 1000 * ( frames * samplesPerFrame) / sampleRate;
    }

    public static long getDuration(String mediaPath)
    {
        if( mediaPath != null && mediaPath.length() > 0)
            try 
            {
                return getDuration(CheapSoundFile.create(mediaPath, null));
            }catch (FileNotFoundException e){} 
            catch (IOException e){}
        return -1;
    }
}

Надеюсь, что помогает

6
задан Aaron Smith 12 June 2009 в 13:19
поделиться

3 ответа

Я понял, что это не имеет отношения к проверке. Это было, когда дата была преобразована обратно в datetime.

Возможно, это не самый элегантный способ сделать это, но он действительно работает. Если кто-нибудь знает способ получше, дайте мне знать.

Теперь у меня есть этот код.

public static void FormatDate(MaskedTextBox c) {
    c.DataBindings[0].Format += new ConvertEventHandler(Date_Format);
    c.DataBindings[0].Parse += new ConvertEventHandler(Date_Parse);
}

private static void Date_Format(object sender, ConvertEventArgs e) {
    if (e.Value == null)
        e.Value = "";
    else
        e.Value = ((DateTime)e.Value).ToString("MM/dd/yyyy");
}

static void Date_Parse(object sender, ConvertEventArgs e) {
    if (e.Value.ToString() == "  /  /")
        e.Value = null;
}
4
ответ дан 17 December 2019 в 04:51
поделиться

Это должно работать:

private void Form1_Load(object sender, EventArgs e)
{
    maskedTextBox1.Mask = "00/00/0000";
    maskedTextBox1.ValidatingType = typeof(System.DateTime);
    maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler
       (maskedTextBox1_TypeValidationCompleted);
}



private void TypeValidationCompletedHandler(object sender, TypeValidationEventArgs e )
{
    e.Cancel = !e.IsValidInput &&
        this.maskedTextBox1.MaskedTextProvider.AssignedEditPositionCount == 0;

}
0
ответ дан 17 December 2019 в 04:51
поделиться

Экспериментируя с этим, я наконец нашел более простое решение.

ШАГ 1:

Найдите строку, которая связывает ваш maskedtextbox (мой называется «mTFecha») в вашем Form.Designer.cs. то есть:

 // mTFecha
 // 
 this.mTFecha.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.listaAnimalesOfertadosBindingSource, "F_peso", true);

ШАГ 2:

Примените небольшой прием:

this.mTFecha.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.listaAnimalesOfertadosBindingSource, "F_peso", true, System.Windows.Forms.DataSourceUpdateMode.OnValidation, "  /  /"));

Готово!

0
ответ дан 17 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: