2017-03-12 13 views
0

この場合、40のリンクがあります。プログラムを実行しているときは、最後の行を1行追加するだけです。なぜdatagridviewへのリンクを追加すると1行だけ追加されますか?

public Form1() 
     { 
      InitializeComponent(); 

      label2.Visible = false; 
      label3.Visible = false; 
      label4.Visible = false; 
      label7.Visible = false; 

      tbxMainDownloadPath.Text = Properties.Settings.Default.LastSelectedFolder; 
      if (tbxMainDownloadPath.Text != "") 
       downloadDirectory = tbxMainDownloadPath.Text; 

      tracker = new DownloadProgressTracker.DownloadProgress(50, TimeSpan.FromMilliseconds(500)); 
      string[] countries = File.ReadAllLines(@"CountriesNames.txt"); 
      string[] countriesCodes = File.ReadAllLines(@"CountriesCodes.txt"); 
      foreach (string country in countries) 
      { 
       countryList.Add(country); 
       string countryPath = Path.Combine(downloadDirectory, country); 
       if (!Directory.Exists(countryPath)) 
        Directory.CreateDirectory(countryPath); 
      } 
      foreach (string code in countriesCodes) 
      { 
       codesList.Add(code); 
      } 
      codeToFullNameMap = codesList 
       .Select((code, index) => index) 
       .ToDictionary(
           keySelector: index => codesList[index], 
           elementSelector: index => countryList[index]); 

      lines = File.ReadAllLines(@"links.txt"); 
      for (int i = 0; i < lines.Length; i++) 
      { 
       RichTextBoxExtensions.AppendText(true, richTextBox1, "Ready: ", Color.Red, 8.25f); 
       richTextBox1.AppendText(lines[i] + (i < lines.Length - 1 ? Environment.NewLine : String.Empty)); 
      } 

      for (int i = 0; i < countriesCodes.Length; i++) 
      { 
       dataGridView1.Columns.Clear(); 
       dataGridView1.ColumnCount = 2; 
       dataGridView1.Columns[0].Name = "Country"; 
       dataGridView1.Columns[1].Name = "Code"; 
       var countryName = codeToFullNameMap[countriesCodes[i]]; 
       string[] row = new string[] { countryName, countriesCodes[i] }; 
       dataGridView1.Rows.Add(row); 
       DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn(); 
       dgvLink.UseColumnTextForLinkValue = true; 
       dgvLink.LinkBehavior = LinkBehavior.SystemDefault; 
       dgvLink.HeaderText = "Link Data"; 
       dgvLink.Name = "SiteName"; 
       dgvLink.LinkColor = Color.Blue; 
       dgvLink.TrackVisitedState = true; 
       dgvLink.Text = lines[i]; 
       dgvLink.UseColumnTextForLinkValue = true; 
       dataGridView1.Columns.Add(dgvLink); 
      } 
     } 

国コードには40の項目があります。

Datagridview

それが残りの部分を追加していない、最初の問題はそれだけで一つの国を追加することだということです、それがリンクだとそれが最後の一つです。

第2の問題は、どのように私はそれを右に移動させることができますか?私は右のデータグリッドビューの端の側にリンク列を右にドラッグするためにマウスを使用しているときに実行することを意味します。私はすでに右端側にすることができますか?私は右にドラッグした後、スクリーンショットが追加さ:

Link Data column to the right

第三国からハイライトを削除する方法を最後の問題は?私はそれが何かを強調したくない。現在、プログラムを実行しているとき、ハイライトは国で自動です。 Upodate

は私が持っていたすべての問題解決

for (int i = 0; i < countriesCodes.Length; i++) 
      { 
       dataGridView1.ColumnCount = 2; 
       dataGridView1.Columns[0].Name = "Country"; 
       dataGridView1.Columns[1].Name = "Code"; 
       var countryName = codeToFullNameMap[countriesCodes[i]]; 
       string[] row = new string[] { countryName, countriesCodes[i] }; 
       dataGridView1.Rows.Add(row); 
       DataGridViewLinkColumn dgvLink = new DataGridViewLinkColumn(); 
       dgvLink.UseColumnTextForLinkValue = true; 
       dgvLink.LinkBehavior = LinkBehavior.SystemDefault; 
       dgvLink.HeaderText = "Link Data"; 
       dgvLink.Name = "SiteName"; 
       dgvLink.LinkColor = Color.Blue; 
       dgvLink.TrackVisitedState = true; 
       dgvLink.Text = lines[i]; 
       dgvLink.UseColumnTextForLinkValue = true; 
       dataGridView1.Columns.Add(dgvLink); 
      } 
      this.dataGridView1.Columns[2].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
      dataGridView1.EnableHeadersVisualStyles = false; 
      dataGridView1.DefaultCellStyle.SelectionBackColor = dataGridView1.DefaultCellStyle.BackColor; 
      dataGridView1.DefaultCellStyle.SelectionForeColor = dataGridView1.DefaultCellStyle.ForeColor; 

      dataGridView1.AllowUserToAddRows = false; 
      dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control; 
+0

すべての問題を解決しました。私の質問をすべてのサブ質問解決法で編集しました。 –

答えて

1
 for (int i = 0; i < countriesCodes.Length; i++) 
     { 
      dataGridView1.Columns.Clear(); 

をあなたはとてもループを通るだけで、最後の反復が表示するために何かを残し、40回あなたの列をクリアしています。 forループの前にすべてのdataGridView1.Columns設定を行います。 forループは行を追加するだけです。

関連する問題